我有一个 wkinterfacecontroller ,我添加了一个表:
// .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的任何协议声明,表格上都没有任何委托属性。
我在这里缺少一些东西吗?
我发现该方法从未被调用,因为我设置了一个在接口构建器上选择该行的选择。
看来,通过设置委托后没有委托和表协议,它可以阻止DidSelectrow方法被调用。
在Apple的WKInterfaceController文档中,它指出,如果您没有任何动作或egues,则称为的方法为: - 表:didSelectRowatIndex:
如果您使用segues,则称为:
的方法按钮: - context forseguewithIdentifier:
桌子: - context forseguewithIdentifier:coltable:rowindex:
swift 4
这是在REST/JSON实现中选择WKInterfacetable行的一个示例。
创建一个数组类的上下文属性实例,而不是使用self.pushController
。
override func table(_ table: WKInterfaceTable, didSelectRowAt rowIndex: Int) {
let message = messageObjects[rowIndex]
presentController(withName: "MessageView", context: message)
}