以编程方式切换场景之间的问题

时间:2019-07-27 14:52:28

标签: ios swift segue

我的问题是我找不到以编程方式在IOS中的两个场景之间转换的正确代码。我已经尝试了一些示例代码,但是它们都没有按预期工作。

let vc storyboard!.instantiateViewController(withIdentifier: "savedMode") as! SavedModeViewController
        let navigationController = UINavigationController(rootViewController: vc)
        self.present(navigationController, animated: true, completion: nil)

此代码转到新场景,但是后退按钮未出现在导航栏的左侧,并且场景之间的转换是错误的;而不是从左到右的动画,而是从下到上的动画。

let controller = storyboard?.instantiateViewController(withIdentifier: "savedMode") as! SavedModeViewController
        present(controller, animated: true, completion: nil)

这是我尝试的第二个代码。问题在于,使用此代码,导航栏在第二个场景中根本不显示。

我尝试了另一种方法,但是屏幕不是黑色,而是第二个场景。

1 个答案:

答案 0 :(得分:0)

调用present将在当前视图控制器上模态显示新的视图控制器。

您想要的是使用pushViewController将新的视图控制器推到现有的UINavigationController上。

if let savedVC = storyboard?.instantiateViewController(withIdentifier: "savedMode") as? SavedModeViewController, 
   let navigationController = self.navigationController {

    navigationController.pushViewController(savedVC, animated: true)

} else {

    // TODO: Handle unexpected nil occurrences
    print("Error loading SavedModeViewController")

}