我看过很多关于这个主题的帖子,但我找不到一个适合解决我的确切情况的帖子。我有一个UITableView,它包含一个带有UIButton和UITextfield的Custom UITableViewCell。我可以使用UITableView Delegate中的以下代码按下按钮:
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *simpleTableIdentifier = @"ConversationCell";
ConversationCell *cell = (ConversationCell *)[tableView dequeueReusableCellWithIdentifier:simpleTableIdentifier];
if (cell == nil)
{
NSArray *nib = [[NSBundle mainBundle] loadNibNamed:@"ConversationCell" owner:self options:nil];
cell = [nib objectAtIndex:0];
}
[cell.participantBtn addTarget:self action:@selector(editClickedParticipant:) forControlEvents:UIControlEventTouchUpInside];
return cell;
}
然后添加以下方法来处理点击
- (void) editClickedParticipant:(id) sender
{
...
}
在editClickedParticipant中,我显示了一个带有选项列表的UIPickerView。一旦选择了选择器的索引,如何在触发editClickedParticipant操作的单元格中更改按钮的文本属性?有没有办法使用标签或什么?
答案 0 :(得分:0)
您可以使用以下方式获取按钮:
UIButton *senderButton = (UIButton *)sender;
并在senderButton中应用更改。
或者, 如果你需要这个细胞,
- (void) editClickedParticipant:(id) sender {
CGPoint buttonPosition = [sender convertPoint:CGPointZero toView:self.tableView];
NSIndexPath *indexPath = [self.tableView indexPathForRowAtPoint:buttonPosition];
//You can get the cell and other components inside the cell using indexPath
}
答案 1 :(得分:0)
可以使用tag
属性轻松完成:
cell.participantBtn.tag = indexPath.row; // This goes in cellForRowAIndexPath method
- (void) editClickedParticipant:(id) sender {
NSInteger row = sender.tag; //Anything can be done with the button
NSIndexPath *indexPath = [NSIndexPath indexPathForItem: row inSection:0];
//Change your button's text attribute here below
[sender setTitle:@"Your new title" forState:UIControlStateNormal];
}
答案 2 :(得分:0)
尝试在tableView:willDisplayCell:forRowAtIndexPath:
这是视图控制器生命周期中调整单元格视图的适当位置/时间 - 就在显示之前。
- (void)tableView:(UITableView *)tableView
willDisplayCell:(UITableViewCell *)cell
forRowAtIndexPath:(NSIndexPath *)indexPath {
'for example...
cell.participantBtn.label = "new label";
}
来自Apple documentation ...
此方法为委托提供了覆盖基于状态的机会 表视图前面设置的属性,例如selection和 背景颜色。委托返回后,表视图仅设置 alpha和frame属性,然后仅在将行设置为动画时 他们滑入或滑出。