WKInterfaceTable如何识别每一行中的按钮



我在表行中循环了3个按钮,按下后它将重定向到相关的详细信息。

问题是如何识别用户单击的按钮?我试过setAccessibilityLabelsetValue forKey,但都不起作用。

您需要在CustomRow类中使用委托

CustomRow.h文件中:

@protocol CustomRowDelegate;
@interface CustomRow : NSObject
@property (weak, nonatomic) id <CustomRowDelegate> deleagte;
@property (assign, nonatomic) NSInteger index;
@property (weak, nonatomic) IBOutlet WKInterfaceButton *button;
@end
@protocol CustomRowDelegate <NSObject>
- (void)didSelectButton:(WKInterfaceButton *)button onCellWithIndex:(NSInteger)index;
@end

CustomRow.m文件中,您需要添加连接到IB中按钮的IBAction。然后处理此操作:

- (IBAction)buttonAction {
    [self.deleagte didSelectButton:self.button onCellWithIndex:self.index];
}

YourInterfaceController.m类中配置行的方法中:

- (void)configureRows {
    NSArray *items = @[*anyArrayWithData*];
    [self.tableView setNumberOfRows:items.count withRowType:@"Row"];
    NSInteger rowCount = self.tableView.numberOfRows;
    for (NSInteger i = 0; i < rowCount; i++) {
        CustomRow* row = [self.tableView rowControllerAtIndex:i];
        row.deleagte = self;
        row.index = i;
    }
 }

现在您只需要实现委托方法:

- (void)didSelectButton:(WKInterfaceButton *)button onCellWithIndex:(NSInteger)index {
     NSLog(@" button pressed on row at index: %d", index);
}

如果按下按钮,WatchKit将调用以下方法:

- (void)table:(WKInterfaceTable *)table didSelectRowAtIndex:(NSInteger)rowIndex

使用rowIndex参数来决定应该执行的操作。

尝试将(发件人:UIButton)放入您的IBAction中,如下所示:

@IBAction func button Pressed(sender:UIButton)

相关内容

  • 没有找到相关文章

最新更新