如何在swift中切换视图控制器?

时间:2014-08-19 03:50:19

标签: ios swift

我尝试使用代码从一个UIViewController切换到另一个UIViewController。现在我有,

self.presentViewController(ResultViewController(), animated: true, completion: nil)

所有这一切都是把我带到黑屏而不是ResultViewController。有什么建议?

8 个答案:

答案 0 :(得分:24)

使用Storyboard。为第二个视图控制器创建一个swift文件(SecondViewController.swift) 并在适当的函数中键入:

let secondViewController = self.storyboard?.instantiateViewController(withIdentifier: "secondViewController") as! secondViewController

self.navigationController.pushViewController(secondViewController, animated: true)

没有故事板

let secondViewController = ViewController(nibNameOrNil: NibName, bundleOrNil: nil)
self.presentViewController(secondViewController, animated: true, completion: nil)

答案 1 :(得分:6)

你可以尝试这个

let storyBoard : UIStoryboard = UIStoryboard(name: "Main", bundle:nil)

let resultViewController = storyBoard.instantiateViewControllerWithIdentifier("ResultView") as ResultViewController

self.presentViewController(resultViewController, animated:true, completion:nil)

确保设置视图控制器标识符。

enter image description here

答案 2 :(得分:4)

Swift 3

以模态方式呈现控制器

let vc = self.storyboard!.instantiateWithIdentifier("SecondViewController")
self.present(vc, animate: true, completion: nil)

显示控制器

self.show(vc, sender: self)

答案 3 :(得分:2)

最简单的方法是通过右键单击您正在开始的视图创建一个segue,然后将蓝线拖到结果视图控制器中,点击show segue选项。然后将segue的标识符设置为“segue”。现在,在视图控制器中的任何位置添加此代码:

self.performSegueWithIdentifier("segue", sender: nil)

这将触发将转到resultViewController的segue

答案 4 :(得分:1)

试试这个:

let vc = ViewController(nibNameOrNil: yourNibName, bundleOrNil: nil)
self.presentViewController(vc, animated: true, completion: nil)

希望这会有所帮助.. :)

答案 5 :(得分:0)

在iOS中切换屏幕的最简单方法是。在当前屏幕上添加一个按钮。然后按控制并将按钮拖动到目标屏幕。然后选择推送。当您点击按钮时,屏幕将切换到目标屏幕。 确保您使用的是UINavigationViewController。

来源:ios UINavigationController Tutorial

答案 6 :(得分:0)

vc = YourViewController()

UIApplication.shared.keyWindow?.rootViewController = vc

vc = YourViewController()

UIApplication.shared.keyWindow?.rootViewController = UINavigationController(rootViewController:vc)//如果要向该VC添加导航功能

答案 7 :(得分:-1)

Shaba的答案是一个良好的开端,但需要以下内容才能得到你 可以从视图控制器中控制segue:

override func shouldPerformSegue(withIdentifier identifier: String, 
              sender: Any?) -> Bool {    
 // your code here    
 // return true to execute the segue    
 // return false to cause the segue to gracefully fail  } 

Source