override func prepare(对于segue:UIStoryboardSegue,sender:Any?)无法正常工作

时间:2016-12-20 01:44:23

标签: ios swift swift3

我对override func prepare for segue有疑问。我有一个表视图控制器,它有一个UINavigationController和一个来自另一个视图控制器的按钮,它连接到UINav作为“模态存在”,标识符为“fakeButtonPressed”。

我的问题是,当我按下按钮时将此代码添加到我的视图控制器中时,会抛出错误:

  

“无法识别的选择器发送到实例0x7f9c784018f0”

在控制台中。不知道为什么它不起作用。

尝试访问AddPlayerViewController> UINavigationController> AddPlayerTableViewController。

override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
    if segue.identifier == "fakeButtonPressed"{
        let navigationController = segue.destination as! UINavigationController
        let controller = navigationController.topViewController as! AddPlayerTableViewController
    }
}

1 个答案:

答案 0 :(得分:0)

请在故事板中删除按钮单击“操作首选项”。

要删除动作事件,请单击上方图像中的交叉按钮,如上图所示,它将解决您的问题。

是的,您也可以像这样编写segue方法的准备工作:

override func prepare(for segue: UIStoryboardSegue, sender: Any?)
{
    if segue.identifier == "fakeButtonPressed"
    {
        let controller = (segue.destination as! UINavigationController).viewControllers[0] as! AddPlayerTableViewController
        controller.str = "Done..."
    }
}

override func prepare(for segue: UIStoryboardSegue, sender: Any?)
{
    if segue.identifier == "fakeButtonPressed"
    {
        let controller = (segue.destination as! UINavigationController).topViewController as! AddPlayerTableViewController
        controller.str = "Done..."
    }
}