如何使用我的操作并以编程方式过渡到故事板中定义的视图控制器?

时间:2016-02-15 14:13:35

标签: ios iphone swift segue uistoryboard

我有一个发送的动作,如下:

    @IBAction func showSettings(sender: AnyObject) {
     let settingsPicker = SettingsViewController()
     settingsPicker.setDelegate(self)
     let navigationController = UINavigationController (rootViewController: settingsPicker)
     self.presentViewController(navigationController, animated: true, completion: nil)  
     }

该方法创建一个控制器,设置对该委托的引用,并创建一个导航控制器。

所有这些都有效,但故事板中定义的小部件不会出现。 SettingsViewController应该管理故事板中定义的UI。我认为因为我以编程方式创建它没有出现任何小部件。 SettingsViewController不以编程方式创建小部件,在故事板中以声明方式定义。

如果我使用segue链接(在故事板中)两个控制器,则会显示小部件,但我的操作未被使用。

如何使用我的动作并呈现故事板中定义的视图控制器/ ui?

2 个答案:

答案 0 :(得分:2)

当你在UIViewControllers之间创建一个segue时,你应该定义一个标识符,例如:" settingsSegue"。

在您的代码中,您可以通过使用标识符

调用segue来执行该segue
@IBAction func showSetting(sender: AnyObject) {
    performSegueWithIdentifier("settingsSegue", sender: nil)
}

要设置SettingsViewController,您应该实现以下内容:

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

    if let settingsController = segue.destinationViewController as? SettingsViewController {
        settingsController.delegate = self
    }
}

Interacting with Storyboard and Segues

答案 1 :(得分:1)

如果您想通过代码调用segue,请参阅Laffen的回答。

如果要创建在故事板中定义的视图控制器,然后以编程方式显示它,请使用instantiateViewControllerWithIdentifier创建视图控制器的新实例,然后根据需要将其显示在屏幕上(以模态方式显示) ,将它推到你的导航堆栈,或任何你想做的事情。)