更改视图控制器Swift 3

时间:2017-10-21 19:15:20

标签: ios swift3

我正在学习ios开发,我正在尝试制作一个有两个视图的应用程序,每个视图都有一个按钮,按下时会将您发送到另一个视图。我在故事板中设置了两个场景,并且按钮连接到一个动作。根据我所读到的,使用instantiateViewController和一个标识符应该足以改变视图。但是当我运行模拟器时,会出现第一个视图,但单击该按钮无效。我甚至没有收到错误消息。

@IBAction func SwitchViews(_ sender: UIButton) {
    //Switch view controllers
    let vc = storyboard?.instantiateViewController(withIdentifier: "second")
    navigationController?.pushViewController(vc!, animated: true)
}

2 个答案:

答案 0 :(得分:2)

您是否已将故事板嵌入导航控制器。在您的代码导航控制器中可选,因此控制器无法获得导航控制器。

你必须将你的第一个故事板嵌入导航控制器它会工作。你可以在Xcode>Editor>Embed In>Navigation Controller中完成。

答案 1 :(得分:2)

如果您要开发的应用程序没有使用导航视图,那么您只需要提出一些建议即可。在单个视图应用程序中连接到多个视图的正确方法是这样的。我将逐步解释

步骤1 - 将ViewController添加到故事板

第2步 - 从文件创建一个cocoa触摸类 - 新文件(命令+ N也可以做到这一点)

!!! 确保其可可触摸类 !!!

第3步 - 保持UIViewController的子类输入类名,使其保持视图的独特性,使代码看起来干净清晰。

第4步 - 点击下一步并完成。现在转到故事板并将类名添加到您在身份检查器中创建的视图控制器中,并添加故事板标识符名称

步骤5 - 将您的按钮链接到swift文件中的操作,如TouchUpInside并添加以下代码

@IBAction func startButtonPressed(_ sender: UIButton) {

   let controllerVariable = self.storyboard?.instantiateViewController(withIdentifier: "storyboardIdentifier") as! ViewControllerClassName

   self.present(controllerVariable, animated: true, completion: nil)

}

这应该可以创建单个视图应用程序,然后使用多个屏幕构建您的应用程序。

但是,如果您的应用使用IOS默认导航控制器样式,如带有导航项和后退按钮的导航栏,最佳做法是使用导航控制器。

如果没有,那么您可以通过以上步骤完全控制设计用户界面的方式。

希望这会有所帮助:)