繁体   English   中英

快速切换视图控制器

[英]Switching view controllers in 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)

当用户单击“取消”时,我已经临时打印了行print(“此处为Handle Cancel Logic”),但是我需要mainMenuViewController激活。

我尝试创建一个函数来执行此操作,但是它不起作用,您能建议原因吗?

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

任何帮助表示赞赏!

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

我假设您有一个名为Main.storyboard的情节Main.storyboard 如果您没有,请创建一个并添加MainViewController 您应该给MainViewController一个标识符:

在此处输入图片说明

首先,您需要获取情节提要:

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

现在vcMainViewController 您可以通过presentViewController呈现它。

或者,您可以使用segues!

用segue连接SecondaryViewControllerMainViewController 给它一个标识符并打电话

performSegueWithIdentifier("some identifier", sender: self)

在带有Storyboard的 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) 

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM