我有一个 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的任何协议声明,也没有找到表中的任何委托属性。
我在这里缺少什么东西吗?
答案 0 :(得分:5)
我发现该方法从未被调用过,因为我在“接口”构建器上选择了行时设置了一个segue。
似乎通过在设置委托后没有委托和表协议,它会停止调用didSelectRow方法。
答案 1 :(得分:3)
在Apple的WKInterfaceController文档中,它指出如果你没有任何动作或segue,那么调用的方法是: - table:didSelectRowAtIndex:
如果你使用segues,那么调用的方法是:
对于按钮: - contextForSegueWithIdentifier:
表格: - contextForSegueWithIdentifier:inTable:rowIndex:
答案 2 :(得分:0)
快捷键4
下面是在REST / JSON实现中选择WKInterfacetable行的示例。
创建数组类的上下文属性实例,而不使用self.pushController
。
override func table(_ table: WKInterfaceTable, didSelectRowAt rowIndex: Int) {
let message = messageObjects[rowIndex]
presentController(withName: "MessageView", context: message)
}