如何点击 UITableViewCell 中的 UIButton 并转换到新的视图控制器,并传递信息?
Posted
技术标签:
【中文标题】如何点击 UITableViewCell 中的 UIButton 并转换到新的视图控制器,并传递信息?【英文标题】:How to tap on a UIButton in a UITableViewCell and transition to a new view controller, passing it information? 【发布时间】:2014-10-24 21:14:33 【问题描述】:我有一堆UITableViewCell
s,每个都有一个UIButton
。 UIButton
指向一个链接,这就是 UIButton
的文本。
当我点击单元格中的按钮时,我想转换到一个带有WKWebView
的视图控制器,其中显示了链接。
我将如何设计此流程?我可以检测到点击并找出点击的按钮属于哪个单元格,然后找到链接,但是如何转换到新的视图控制器?如果我打电话给performSegueWithIdentifier
我不能传递任何信息,可以吗?
【问题讨论】:
【参考方案1】:您可以在prepareForSegue: sender:
传递信息。
-(void)prepareForSegue:(UIStoryBoardSegue *)segue sender:(id)sender
if([segue.identifier isEqualToString:@"MyIdentifier"])
// get destination
CustomViewController *destination = (CustomViewController *)[segue destinationViewController];
// pass information of some kind
destination.exampleProperty = @"Hello World";
上面的方法将在任何对performSegueWithIdentifier
的调用之后被调用。
【讨论】:
我怎么知道点击的链接是什么? 它是 UIButton 上的一个属性。myButton.label.text
如何获得按钮?
“发件人”是按钮。 UIButton *button = (UIButton*)sender;
然后您可以使用按钮的任何属性来设置目标视图控制器的属性。在目标视图控制器中拥有一个属性,例如 @property (Strong, nonatomic)NSString *URLString;
然后在准备转场 destinationViewController.URLString = button.label.text;
您必须将目标视图控制器的头文件导入到源视图控制器中。【参考方案2】:
扩展摩根的回答:
在响应用户点击行的代码中,将行的索引保存到实例变量中。然后使用 performSegueWithIdentifier 调用你的 segue。
然后将调用您的 prepareForSegue。在 prepareForSegue 中,使用所选项目的索引来查找要传递给目标视图控制器的数据,将目标视图控制器强制转换为正确的类型,并将数据传递给目标的属性。
如果您需要将数据从目的地传回源视图控制器,请在目的地中设置一个委托并使用委托方法将数据传回。
【讨论】:
以上是关于如何点击 UITableViewCell 中的 UIButton 并转换到新的视图控制器,并传递信息?的主要内容,如果未能解决你的问题,请参考以下文章
如何在 swift 中使自定义 UITableViewCell 中的链接可点击
点击 UITableViewCell 类中的 UIImageView 时如何打开新屏幕?
UITableViewCell 中的 UICollectionViewCell 中的按钮点击操作
如何点击 UITableViewCell 中的 UIButton 并转换到新的视图控制器,并传递信息?