我在单元格中有一个带有 UIButton 的表格视图。
我在 didSelectRowAtIndexPath 中创建了一些功能。我想要的是当用户也点击按钮时运行相同的功能/方法。
如何使 buttonPressed 方法运行 didSelectRowAtIndexPath?
如果我不能这样做,我可以将功能移动到一个新方法并让两者都调用这个新方法。但是,如何从按下按钮的方法中获取单元格 indexPath?
我在单元格中有一个带有 UIButton 的表格视图。
我在 didSelectRowAtIndexPath 中创建了一些功能。我想要的是当用户也点击按钮时运行相同的功能/方法。
如何使 buttonPressed 方法运行 didSelectRowAtIndexPath?
如果我不能这样做,我可以将功能移动到一个新方法并让两者都调用这个新方法。但是,如何从按下按钮的方法中获取单元格 indexPath?
UITableViewCell
包含按钮的对象(必须是它的容器视图之一,只需向上查看超级视图链)。[UITableView indexPathForCell:]
。-(IBAction)playButtonPressed:(id)sender {
NSLog(@"button pressed");
UIButton *button = (UIButton *)sender;
UITableViewCell *cell = (UITableViewCell *)button.superview.superview;
UITableView *curTableView = (UITableView *)cell.superview;
NSIndexPath *indexPath = [curTableView indexPathForCell:cell];
[self didSelectRowOrButtonAtIndexPath:indexPath];
}
我创建了一个新方法 didSelectRowOrButtonAtIndexPath 并从 buttonPressed 和 didSelectRowAtIndexPath 调用它,并传入要在我的方法中使用的 indexpath。
在您的cellForRowAtIndexPath
, 分配indexPath.row
给您的按钮tag
(假设您只需要该行 - 想法是以indexPath
某种方式将 附加到按钮,tag
这只是一种方法)。
-(UITableViewCell*)tableView:(UITableView*)tableView cellForRowAtIndexPath:(NSIndexPath*)indexPath {
// Init / Reuse the cell ...
cell.button.tag = indexPath.row;
return cell;
}
-(void)buttonPressed:(UIButton*)button {
[self method:button.tag];
}