我正在为单元格内的按钮设置标签:
/* 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];
并获取该按钮的标题?
希望这是有道理的。建议,想法?
答案 0 :(得分:3)
这一切都很好,但是
[button currentTitle]
失败了,因为它不是一个正确的数据类型。
听起来问题是button
实际上并未指向UIButton
的实例。
我现在该怎么办
UIButton *button=(UIButton *)[self.view viewWithTag:rowOfTheCell];
并抓住那个按钮的标题?
你可能在每一行都这样做,对吗?其中一行将具有索引0,这意味着您将其按钮的标记设置为0.而 的问题是视图的tag
属性的默认值为0那么对于那一行,你得到的第一个子视图碰巧有0作为标记。
至少有两种方法可以解决这个问题:
在标记中添加一些数字,例如1000。这避免了其他视图碰巧与按钮具有相同标记的问题,但它仍然是一种非常迂回的方式来获取您感兴趣的单元格。
完全删除标签。使按钮成为其单元格的目标,并向单元格添加操作。然后,单元格可以调用-openindividualImpact:
将自己作为发件人传递。