ios - 重写 func prepare(for segue : UIStoryboardSegue, sender : Any?) 不能正常工作

标签 ios swift swift3

我有一个关于 override func prepare for segue 的问题。我有一个 TableView Controller ,它有一个 UINavigationController 和一个来自另一个 View Controller 的按钮,该按钮连接到 UINav 作为“模态呈现”,标识符为“fakeButtonPressed”。

我的问题是,当我将此代码添加到我的 View Controller 中以在按下按钮时抛出错误:

"unrecognized selector sent to instance 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
    }
}

最佳答案

请在 Storyboard中删除按钮单击操作首选项。

要删除 Action 事件,请单击 Touch Up Inside 事件中的十字按钮,如上图所示,它将解决您的问题。

是的,你也可以像这样编写 prepare for 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..."
    }
}

关于ios - 重写 func prepare(for segue : UIStoryboardSegue, sender : Any?) 不能正常工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41233702/

相关文章:

ios - .sqlite 和 .storedata 有什么区别

swift - ClosedRange 第二个参数更小,返回 nil

ios - Swift 3 向后兼容中的核心数据栈

swift3 - Swift 3 中 `setImageWith(_:placeholderImage:usingActivityIndicatorStyle:)` 的使用不明确

ios - 无法将自定义类分配给 Xcode 7 中的 View

ios - ASIHTTP 运行 javascript 代码吗?

iphone - 如何将文件下载到 iPhone 的文件系统?

iOS - 如何对深层链接进行单元测试以确保它们可以在应用程序端进行处理

ios - 触摸事件不会在部分扩展到父 UIView 之外的子 UIView 之外注册

ios - 类 func 中的 UITextViewDelegate