在swift中切换视图控制器

时间:2016-06-27 02:41:05

标签: ios iphone swift

我有2个视图控制器。主要有一个mainMenuViewController,另一个是ViewController。

辅助视图控制器有时会显示警告,当用户选择“取消”时,我希望显示mainMenuViewController。

如何通过代码实现这一目标?

到目前为止,我有以下内容:

       let refreshAlert = UIAlertController(title: "You Win!", message: "Do you want to play again?", preferredStyle: UIAlertControllerStyle.Alert)

        refreshAlert.addAction(UIAlertAction(title: "Yes", style: .Default, handler: { (action: UIAlertAction!) in
            self.restart()
        }))

        refreshAlert.addAction(UIAlertAction(title: "Cancel", style: .Cancel, handler: { (action: UIAlertAction!) in
            print("Handle Cancel Logic here")
        }))

        presentViewController(refreshAlert, animated: true, completion: nil)

当用户点击取消时,我暂时打印了行打印(“在此处理取消逻辑”),但我需要mainMenuViewController才能激活。

我已尝试创建一个功能来执行此操作,但它不起作用,你能说明原因吗?

@IBAction func quit(sender: UIBarButtonItem) {
    let vc = mainMenuViewController()
    self.presentViewController(vc, animated: true, completion: nil)
}

任何帮助表示赞赏!

2 个答案:

答案 0 :(得分:2)

您不能只在VC类上调用初始化程序来初始化VC。 是正确的方法。

我假设你有一个名为Main.storyboard的故事板。如果您没有,请创建一个并添加MainViewController。您应该为MainViewController提供标识符:

enter image description here

首先,您需要获取故事板:

let storyboard = UIStoryboard(name: "Main", bundle: nil)
let vc = storyboard.instantiateViewControllerWithIdentifier("mainVC")

现在vcMainViewController!您可以按presentViewController提供。

或者,您可以使用segues!

将您的SecondaryViewControllerMainViewController与segue联系起来。给它一个标识符并打电话

performSegueWithIdentifier("some identifier", sender: self)

答案 1 :(得分:0)

Swift 3 故事板

  1. 为您的第二个视图控制器提供storyboardID。 (假设它被称为“secondVC”)
  2. 在第一个视图控制器的代码中,当您要切换时,请写:

    let storyBoard: UIStoryboard = UIStoryboard(name: "Main", bundle: nil)
    let secondVC = storyBoard.instantiateViewController(withIdentifier: "secondVC")
    self.present(mainVC, animated: true, completion: nil)