根据标签抓取按钮标题 - 目标C

时间:2014-03-18 01:45:14

标签: ios objective-c uibutton

我正在为单元格内的按钮设置标签:

  /* GIVE THUMBNAIL TAG TO BE USED LATER */
  cell.thumbnail.tag = indexPath.row;

现在我还指定要使用的selector并调用当前单击的单元格。现在我要做的是在我需要抓取的按钮的同一单元格内单击按钮时。我希望它比调用其他按钮标题(根据索引分配了标签的按钮)我需要抓住那个按钮标题。

我在做什么:

-(IBAction) openindividualImpact: (id) sender {
    CGPoint buttonPosition = [sender convertPoint:CGPointZero toView:self.tableView];
    NSIndexPath *indexPath = [self.tableView indexPathForRowAtPoint:buttonPosition];
    NSInteger rowOfTheCell = indexPath.row;
    NSLog(@"rowofthecell %d", rowOfTheCell);
    UIButton *button=(UIButton *)[self.view viewWithTag:rowOfTheCell];
    NSString *btnTitle = [button currentTitle];
    NSLog(@"User clicked %@", btnTitle);


}

注意btnTitle正在尝试根据点击的行获取button的按钮标题。这一切都很好,但[button currentTitle]失败,因为它不是一个正确的数据类型。我的问题是我现在如何才能获取UIButton *button=(UIButton *)[self.view viewWithTag:rowOfTheCell]; 并获取该按钮的标题?

希望这是有道理的。建议,想法?

1 个答案:

答案 0 :(得分:3)

  

这一切都很好,但是[button currentTitle]失败了,因为它不是一个正确的数据类型。

听起来问题是button实际上并未指向UIButton的实例。

  

我现在该怎么办UIButton *button=(UIButton *)[self.view viewWithTag:rowOfTheCell];   并抓住那个按钮的标题?

你可能在每一行都这样做,对吗?其中一行将具有索引0,这意味着您将其按钮的标记设置为0.而 的问题是视图的tag属性的默认值为0那么对于那一行,你得到的第一个子视图碰巧有0作为标记。

至少有两种方法可以解决这个问题:

  • 在标记中添加一些数字,例如1000。这避免了其他视图碰巧与按钮具有相同标记的问题,但它仍然是一种非常迂回的方式来获取您感兴趣的单元格。

  • 完全删除标签。使按钮成为其单元格的目标,并向单元格添加操作。然后,单元格可以调用-openindividualImpact:将自己作为发件人传递。