WKInterfaceTable 的 didSelectRowAtIndex 永远不会在 WKInterfaceController 中被调用
WKInterfaceTable's didSelectRowAtIndex never gets called in WKInterfaceController
我有一个 WKInterfaceController 并且我添加了一个 table 如下:
// .h
@interface InterfaceController : WKInterfaceController
@property (weak, nonatomic) IBOutlet WKInterfaceTable *table;
@end
// .m
- (void)table:(WKInterfaceTable *)table didSelectRowAtIndexPath:(NSIndexPath *)indexPath{
NSLog(@"did select");
}
- (void)table:(WKInterfaceTable *)table
didSelectRowAtIndex:(NSInteger)rowIndex{
NSLog(@"did select new");
}
然而,这两种方法都没有被调用。我找不到 WKInterfaceTable 的任何协议声明,也找不到 table 上的任何委托 属性。
这里有我遗漏的东西吗?
我发现该方法从未被调用,因为我已经设置了一个 segue,以便在选择界面生成器上的行时触发。
似乎通过没有委托和 table 协议,一旦您设置了委托,它就会停止调用 didSelectRow 方法。
Apple 的 WKInterfaceController 文档指出,如果您没有任何操作或转场,则调用的方法是:
- table:didSelectRowAtIndex:
如果您使用 segues,那么调用的方法是:
对于按钮:
-contextForSegueWithIdentifier:
对于表格:
- contextForSegueWithIdentifier:inTable:rowIndex:
Swift 4
这是在 REST/JSON 实现中选择 WKInterfacetable 行的示例。
创建数组 class 的上下文 属性 实例,而不是使用 self.pushController
。
override func table(_ table: WKInterfaceTable, didSelectRowAt rowIndex: Int) {
let message = messageObjects[rowIndex]
presentController(withName: "MessageView", context: message)
}
我有一个 WKInterfaceController 并且我添加了一个 table 如下:
// .h
@interface InterfaceController : WKInterfaceController
@property (weak, nonatomic) IBOutlet WKInterfaceTable *table;
@end
// .m
- (void)table:(WKInterfaceTable *)table didSelectRowAtIndexPath:(NSIndexPath *)indexPath{
NSLog(@"did select");
}
- (void)table:(WKInterfaceTable *)table
didSelectRowAtIndex:(NSInteger)rowIndex{
NSLog(@"did select new");
}
然而,这两种方法都没有被调用。我找不到 WKInterfaceTable 的任何协议声明,也找不到 table 上的任何委托 属性。
这里有我遗漏的东西吗?
我发现该方法从未被调用,因为我已经设置了一个 segue,以便在选择界面生成器上的行时触发。
似乎通过没有委托和 table 协议,一旦您设置了委托,它就会停止调用 didSelectRow 方法。
Apple 的 WKInterfaceController 文档指出,如果您没有任何操作或转场,则调用的方法是: - table:didSelectRowAtIndex:
如果您使用 segues,那么调用的方法是:
对于按钮: -contextForSegueWithIdentifier:
对于表格: - contextForSegueWithIdentifier:inTable:rowIndex:
Swift 4
这是在 REST/JSON 实现中选择 WKInterfacetable 行的示例。
创建数组 class 的上下文 属性 实例,而不是使用 self.pushController
。
override func table(_ table: WKInterfaceTable, didSelectRowAt rowIndex: Int) {
let message = messageObjects[rowIndex]
presentController(withName: "MessageView", context: message)
}