使用 Swift 实现 NSTableViewRowAction
Implementing NSTableViewRowAction using Swift
这应该很简单,但我不明白如何执行此操作。
我使用 objective-c 找到了这个参考,但我想使用 swift:
- (NSArray<NSTableViewRowAction *> *)tableView:(NSTableView *)tableView rowActionsForRow:(NSInteger)row edge:(NSTableRowActionEdge)edge {
NSTableViewRowAction *action = [NSTableViewRowAction rowActionWithStyle:NSTableViewRowActionStyleDestructive title:@"Delete"
handler:^(NSTableViewRowAction * _Nonnull action, NSInteger row) {
// TODO: You code to delete from your model here.
NSLog(@"Delete");
}];
return @[action];
}
我知道我需要实现功能,但不知道如何实现方法。
我是 macOS 开发的新手,在 App Store 上为 iOS 开发了两个应用程序我认为将它们移植到 MacOS 会相对简单,我的错误!!
感谢任何帮助。
在 macOS 10.11 中添加了可滑动 table,因此要访问您需要在 table 委托上实现此 NSTableViewDelegate
方法的功能。例如,为你的视图控制器添加一个扩展就像这样简单:
extension ViewController: NSTableViewDelegate {
func tableView(_ tableView: NSTableView, rowActionsForRow row: Int, edge: NSTableRowActionEdge) -> [NSTableViewRowAction] {
// left swipe
if edge == .trailing {
let deleteAction = NSTableViewRowAction(style: .destructive, title: "Delete", handler: { (rowAction, row) in
// action code
})
deleteAction.backgroundColor = NSColor.red
return [deleteAction]
}
let archiveAction = NSTableViewRowAction(style: .regular, title: "Archive", handler: { (rowAction, row) in
// action code
})
return [archiveAction]
}
}
这应该很简单,但我不明白如何执行此操作。
我使用 objective-c 找到了这个参考,但我想使用 swift:
- (NSArray<NSTableViewRowAction *> *)tableView:(NSTableView *)tableView rowActionsForRow:(NSInteger)row edge:(NSTableRowActionEdge)edge {
NSTableViewRowAction *action = [NSTableViewRowAction rowActionWithStyle:NSTableViewRowActionStyleDestructive title:@"Delete"
handler:^(NSTableViewRowAction * _Nonnull action, NSInteger row) {
// TODO: You code to delete from your model here.
NSLog(@"Delete");
}];
return @[action];
}
我知道我需要实现功能,但不知道如何实现方法。 我是 macOS 开发的新手,在 App Store 上为 iOS 开发了两个应用程序我认为将它们移植到 MacOS 会相对简单,我的错误!!
感谢任何帮助。
在 macOS 10.11 中添加了可滑动 table,因此要访问您需要在 table 委托上实现此 NSTableViewDelegate
方法的功能。例如,为你的视图控制器添加一个扩展就像这样简单:
extension ViewController: NSTableViewDelegate {
func tableView(_ tableView: NSTableView, rowActionsForRow row: Int, edge: NSTableRowActionEdge) -> [NSTableViewRowAction] {
// left swipe
if edge == .trailing {
let deleteAction = NSTableViewRowAction(style: .destructive, title: "Delete", handler: { (rowAction, row) in
// action code
})
deleteAction.backgroundColor = NSColor.red
return [deleteAction]
}
let archiveAction = NSTableViewRowAction(style: .regular, title: "Archive", handler: { (rowAction, row) in
// action code
})
return [archiveAction]
}
}