UITableViewCell 中的按钮 [重复]
Posted
技术标签:
【中文标题】UITableViewCell 中的按钮 [重复]【英文标题】:Buttons in UITableViewCell [duplicate] 【发布时间】:2015-05-04 12:00:34 【问题描述】:我有一个 UITableViewCell,里面有一个按钮,当我按下按钮时,它会移动到下一个视图,但我需要传递 TableViewCell 的索引,但我找不到它,因为它不在 DidSelectCellAtIndexPath 中,它只是可按下的按钮。
如何找出 Button 的 indexPath 以及为什么会崩溃?
【问题讨论】:
在那个按钮上添加标签并传递这个标签! 可以通过 DidSelectRowAtIndexPath 获取索引 在这里查看我的解决方案***.com/a/22827645/790842。您可以将NSIndexPath
创建为属性并按照那里的描述使用它。
将索引行指定为该按钮的标记,然后在单击时检索它
在此处查看解决方案***.com/questions/7504421/…
【参考方案1】:
一个非常简单的解决方案:-
(void)btnAction:(id)sender
CGPoint btnRectPoint = [sender convertPoint:CGPointZero
toView:self.tableView];
NSIndexPath *indexPath = [self.tableView indexPathForRowAtPoint:btnRectPoint]; // Here you can get your indexpath of table
NSLog(@"index.row=%d",indexPath);
【讨论】:
这可以工作并记录索引路径,但是在 prepareForSegue 中,如果我尝试将 indexPath 传递给 ViewController2.h 中的 IndexPath,它会因“无法识别的选择器发送到实例”而崩溃 我在 prepareForSegue 中的代码是-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender [super prepareForSegue:segue sender:sender]; ViewController2 *view = [segue destinationViewController]; view.indexPath = self.indexPath;
它在view.indexPath = self.indexPath
上中断。 self.indexPath 分配在 -(void)btnAction:(id)sender 的底部
inside (void)btnAction:(id)sender...... self.indexPath = indexPath;
我已经在单独的问题中发布了代码,当它允许我发布问题时将发布链接。我如何在 ViewController2 中初始化“self.indexPath”【参考方案2】:
您可以在UIViewController
中创建协议并实现委托方法。现在,当您单击UITableViewCell
内的按钮时,您可以将单元格对象本身作为参数传递给该委托方法。
-(void)protocolMethod:(id)sender
[self.delegate delegateMethod:self];
在您的UIViewController
中,您可以从表格视图中获取此单元格的索引路径。
-(void)delegateMethod:(MyCustomCell*)cell
NSIndexPath *indexPath = [self.objTableView indexPathForCell:cell];
【讨论】:
以上是关于UITableViewCell 中的按钮 [重复]的主要内容,如果未能解决你的问题,请参考以下文章
Swift中带有按钮的UITableViewCell [重复]
UITableViewCell UIButton选择[重复]