0

在 ios 应用程序中。我有一个 UITableView,其中包含名为“MyCustomCell”的原型单元格。“MyCustomCell”包含一个按钮和一个名为“cellKey”的 NSString 属性:

@interface MyCustomCell : UITableViewCell
    @property (weak, nonatomic) IBOutlet UIButton *myButton;
    @property (strong, nonatomic) NSString *cellKey;
@end

在 cellForRowAtIndexPath Delegate 方法中,我分配了 cellKey 并向按钮添加了一个点击侦听器。

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    NSUInteger row = [indexPath row];

    MyItem *item = [self.data objectAtIndex:row];

    NSString *identifier = @"MyCustomCell";
    MyCustomCell *cell =  (MyCustomCell *)[tableView dequeueReusableCellWithIdentifier:identifier];

    //Give the cell the key
    cell.cellKey = item.key;
    //add a tap listener
    [cell.myButton addTarget:self action:@selector(buttonTaped:) forControlEvents:UIControlEventTouchUpInside];
    return cell;
}

在 buttonTaped 处理程序中,我想获取与单击的按钮对应的单元格的键:

- (IBAction)buttonTaped:(id)sender
{
    //Get the button
    UIButton *senderButton = (UIButton *)sender;
    //get the super view which is the cell
    MyCustomCell *cell = (MyCustomCell *)[senderButton superview];
   //get the key
    NSString *key = cell.cellKey;

}

但是,当我运行应用程序并单击按钮时,当我调用 cell.cellKey 并出现以下错误时应用程序崩溃:

-[UITableViewCellContentView cellKey]: unrecognized selector sent to instance 0x13576240

它没有认识到 superView 是 MyCustomCell 类型。那么如何获取包含单击按钮的单元格的“cellKey”属性?

谢谢

4

1 回答 1

1

您的按钮实际上已添加到单元格中contentView,因此您需要在superview层次结构上再导航一层才能到达单元格。

于 2013-07-05T22:57:16.777 回答