更改视图控制器Swift 3

更改视图控制器Swift 3

问题描述:

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

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

你有导航控制器嵌入到你的第一个视图控制器 –

+0

我没有,是像一个容器,以便容纳其他两种观点? –

+0

如果您在导航控制器中推送viewcontroller,则需要将其嵌入到第一个视图控制器中,然后解决问题 –

你有你嵌入故事板导航controller.In代码导航控制器可选的,所以控制器无法获取导航控制器。

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

只是一个建议,如果你打算开发不使用导航视图的应用程序,你已经做了些什么。在单个视图应用程序中连接多个视图的正确方法就是这样。我将在步骤

第1步解释 - 一个视图控制器添加到您的故事板

第2步 - 创建一个从文件中可可触摸类 - 新 - 文件(命令+ 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默认导航控制器样式,如带导航条的导航栏和后退按钮,则最佳做法是使用导航控制器。

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

希望这有助于:)