当前位置 : 主页 > 手机开发 > ios >

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

来源:互联网 收集:自由互联 发布时间:2021-06-11
我必须在表格行中循环输出3个按钮,按下时它将重定向到相关的详细信息. 问题是如何识别用户点击的按钮?我尝试过setAccessibilityLabel和setValue forKey,但两者都不起作用. 您需要在CustomRo
我必须在表格行中循环输出3个按钮,按下时它将重定向到相关的详细信息.

问题是如何识别用户点击的按钮?我尝试过setAccessibilityLabel和setValue 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);
}
网友评论