在 Swift 中以编程方式使用 segues 传递信息

Posted

技术标签:

【中文标题】在 Swift 中以编程方式使用 segues 传递信息【英文标题】:Passing information using segues programmatically in Swift 【发布时间】:2016-09-16 14:33:50 【问题描述】:

我有这门课:

class ViewController: UIViewController 

    var keywords = []

    ...


和另一个班级:

class ExplorerViewController: UIViewController 

    func searchMapSegue() 
        let next = self.storyboard?.instantiateViewControllerWithIdentifier("MapViewController") as! ViewController
        next.keywords = searchKeywordsArray
        self.presentViewController(next, animated: false, completion: nil)
    

点击按钮即可调用 searchMapSegue()。

我正在尝试将 searchKeywordsArray 传递给 ViewController,但我得到了 EXC_BAD_INSTRUCTION。有人可以告诉我这里有什么问题吗?我没有使用故事板。

【问题讨论】:

在代码中你正在使用情节提要,在描述中你说“我没有使用情节提要”。这是什么意思? @NiravD 哦,对不起,我的意思是我没有使用 main.storyboard。我只是跟着这个:***.com/questions/31813942/…. 您在使用 XIb 吗? @NiravD 我现在不在。我应该吗? 您是否以编程方式生成设计? 【参考方案1】:

您需要在这里考虑几件事。

1) 你当前的viewcontroller 和ExplorerViewController 在同一个storyborad 中?如果是,则可以使用 self.storyboard。如果不是,你不能使用 self.storyboard。

你需要使用下面的代码

let explorerViewController =  UIStoryboard(name: NAME_OF_YOUR_STORYBOARD, bundle: nil).instantiateViewControllerWithIdentifier("ExplorerViewController") as! ExplorerViewController

2) 您是否正确设置了标识符?您需要设置标识符。请参阅随附的屏幕截图。

希望这能解决您的问题

【讨论】:

以上是关于在 Swift 中以编程方式使用 segues 传递信息的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 Swift 在 iOS 中以编程方式进行 segue

无法使用 Xcode 8 和 Swift 3 在 SpriteKit 中以编程方式触发 segue

在 Swift 中以编程方式从 MainViewController 切换到 .xib 视图?

在单元测试中以编程方式执行 Unwind Segue

Swift 以编程方式创建一个 unwind segue

在swift3中按下按钮时如何以编程方式执行segue或呈现视图