从 UITableViewCell 中的 UIButton 触发 Segue

Posted

技术标签:

【中文标题】从 UITableViewCell 中的 UIButton 触发 Segue【英文标题】:Trigger Segue from UIButton in TabeViewCell 【发布时间】:2015-08-31 21:54:29 【问题描述】:

我有原型单元格,在这个单元格中有一个 UIButton;所以我需要从按钮到其他控制器,而不是从单元格执行 segue。我尝试创建一个 Outlet @IBOutlet var button: UIButton! 并使用 performSegueWithIdentifier() 方法

func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath)

    self.performSegueWithIdentifier("toSecondController", sender: button)
    tableView.deselectRowAtIndexPath(indexPath, animated: true)

但我不知道如何设置 prepareForSegue() 方法...我试过这个

override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?)

    if segue.identifier == "toSecondController"
    
        if let indexPath = sender as? UIButton//tableView.indexPathForSelectedRow()
        
            let controller = segue.destinationViewController as! CoriViewController
            controller.coriSquadra = DataManager.sharedInstance.arrayCori[indexPath.row]
        
    

我还读到一个解决方案是实现一个协议,但我是一个初学者,我需要一个分步指南。 希望有人可以帮助我!

【问题讨论】:

【参考方案1】:

你在正确的轨道上。在你的 tableviewcontroller 中定义

@IBAction func clicked()
    self.performSegueWithIdentifier("toSecondController", sender: button)

你可以保留

    tableView.deselectRowAtIndexPath(indexPath, animated: true)

didSelectRowAtIndexPath 中的行。不要忘记将您的 ibaction 连接到情节提要中的按钮。

【讨论】:

非常感谢!但我也有 segue 的问题“uibutton 没有名为 row 的成员(第 8 行)! 将发件人:按钮更改为发件人:自己 抱歉,我无法让 prepareForSegue 正常工作……你能帮我用其他方法吗? Xcode 仍然显示以前的错误。 把 toCoriViewController 改成 toSecondController 应该全部清理干净 对不起,这是一个应对和粘贴错误......这是给我错误 controller.coriSquadra = DataManager.sharedInstance.arrayCori[indexPath.row]

以上是关于从 UITableViewCell 中的 UIButton 触发 Segue的主要内容,如果未能解决你的问题,请参考以下文章

从 UITableViewCell 中的 UIButton 触发 Segue

如何从目标c中的uitableViewCell取回文本字段数据?

从 UITableViewCell 中的 UITextField 获取数据

从 UITableViewController 继承的控制器中的自定义 uitableViewCell

如何从 UITableViewCell 中的自定义 UIButton 中删除触摸延迟

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