如何点击 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 【问题描述】:

我有一堆UITableViewCells,每个都有一个UIButtonUIButton 指向一个链接,这就是 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 并转换到新的视图控制器,并传递信息?

如何从 swift 中的按钮选项中删除 uitableviewcell?

从 UICollectionViewCell 中点击按钮时,如何引用 UITableViewCell?