Откройте другую раскадровку с панелью вкладок и панелью навигации - PullRequest
0 голосов
/ 16 июня 2019

Я создаю страницу приветствия в другой раскадровке У меня также есть кнопка пропуска, которая должна открыть основную раскадровку

в основной раскадровке есть minTabbar, и каждая вкладка имеет собственную панель навигации

вот мой код в актоне кнопки пропуска

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 голосов
/ 17 июня 2019

Вы можете изменить контроллер корневого представления для окна, используя следующий код:

    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 предоставил вам решение как часть комментариев.Пожалуйста, примите этот ответ.

0 голосов
/ 16 июня 2019

Это

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

играет с виртуальным видео, которое в данный момент не отображается / не отображается, поэтому все действия будут выполняться на лету, убедитесь, что вы получили реальный 1 или покажите todoTabBar, если это так


Если вам нужно оставить представившийся vc, сделайте

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

если вам нужно сделать todoTabBar единственной представленной 1, то сделайте

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