3

我有一个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 的任何协议声明,也找不到表上的任何委托属性。

我在这里缺少什么吗?

4

3 回答 3

7

我发现该方法从未被调用,因为我已经设置了一个 segue,以便在选择 Interface builder 上的行时触发。

似乎一旦设置了委托就没有委托和表协议,它会阻止调用 didSelectRow 方法。

于 2015-05-14T08:18:33.303 回答
3

在 Apple 的 WKInterfaceController 文档中,它指出如果您没有任何操作或 segues,则调用的方法是: - table:didSelectRowAtIndex:

如果您使用 segues,则调用的方法是:

对于按钮:- contextForSegueWithIdentifier:

对于表:- contextForSegueWithIdentifier:inTable:rowIndex:

于 2015-05-19T09:26:59.393 回答
1

斯威夫特 4

这是在 REST/JSON 实现中选择 WKInterfacetable 行的示例。

创建数组类的上下文属性实例,而不是使用self.pushController.

override func table(_ table: WKInterfaceTable, didSelectRowAt rowIndex: Int) {
    let message = messageObjects[rowIndex]
    presentController(withName: "MessageView", context: message)
}
于 2018-11-20T12:45:18.667 回答