使用标签栏和导航栏打开另一个情节提要

时间:2019-06-16 19:34:42

标签: ios swift storyboard

我正在另一个故事板上创建欢迎页面 我还有一个跳过按钮,应该打开主故事板

在主故事板上,有一个minTabbar,每个选项卡都有其自己的导航栏

这是我在跳过按钮的acton中的代码

var window: UIWindow?
let mainStoryBoard = UIStoryboard(name: "Main", bundle: nil)

@IBAction func skipButton(_ sender: UIButton) {

    let todoTabBar = mainStoryBoard.instantiateViewController(withIdentifier: "mainTabBar") as! UITabBarController
    todoTabBar.selectedIndex = 1
    let nvc = todoTabBar.selectedViewController as? UINavigationController
    nvc?.popToRootViewController(animated: false)
}

但是它不起作用,点击按钮后什么也没发生,您能帮我吗? 非常感谢

2 个答案:

答案 0 :(得分:0)

let nvc = todoTabBar.selectedViewController as? UINavigationController
nvc?.popToRootViewController(animated: false)

使用当前未显示/呈现的vc进行播放,因此所有操作都将即时进行,请确保访问实际呈现的1或在这种情况下显示todoTabBar


如果您需要离开主讲台

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

如果您需要让todoTabBar成为唯一出现的1项

(UIApplication.shared.delegate as! AppDelegate).window!.rootViewController = todoTabBar

答案 1 :(得分:0)

您可以使用以下代码更改根视图控制器的窗口:

    let stotyBoard = UIStoryboard(name: "OtherStoryBoard", bundle: nil)
    if let otherVC = stotyBoard.instantiateViewController(withIdentifier: "OtherViewController") 
    as? OtherViewController {

        let appDelegate = UIApplication.shared.delegate as! AppDelegate
        appDelegate.window = UIWindow(frame: UIScreen.main.bounds)
        appDelegate.window?.rootViewController = otherVC
        otherVC.selectedIndex = 0
        appDelegate.window?.makeKeyAndVisible()
    }

看起来@Sh_khan也为您提供了解决方案,作为注释的一部分。请接受该答案。