Загрузить контроллер панели вкладок из AppDelegate

Я пытался понять это сам, но не смог.

Я хочу загрузить контроллер панели вкладок из моего AppDelegate (после успешного входа Google в приложение).

Я прочитал здесь, как загрузить ViewController из AppDelegate

Выполнить Segue из App Delegate Swift

Код в примере:

// Access the storyboard and fetch an instance of the view controller
let storyboard = UIStoryboard(name: "Main", bundle: nil);
let viewController: MainViewController = storyboard.instantiateViewController(withIdentifier: "ViewController") as! MainViewController;

// Then push that view controller onto the navigation stack
let rootViewController = self.window!.rootViewController as! UINavigationController;
rootViewController.pushViewController(viewController, animated: true);

В этом примере моему Tab Bar нужны как имя, так и идентификатор, насколько я понял.

Может кто-нибудь, пожалуйста, объясните мне это? Я не могу найти "идентификатор" на контроллере панели вкладок, только "Заголовок".

Кроме того, у меня нет представления контроллера навигации в моем приложении.

1 ответ

Решение

Установить ID раскадровки здесь

и встроить первый ViewController в IB в NavigationController

 let rootViewController = self.window!.rootViewController as! UINavigationController;
 rootViewController.pushViewController(viewController, animated: true);

iOS 13 Обновление

Из версии. iOS 13, RootViewController будет запущен вscene функция, расположенная в SceneDelegate.swift вместо того AppDelegate.swiftфайл. что выглядит так.

Пример:

         // Simple init
        let mainSB: UIStoryboard = UIStoryboard(name: "Main", bundle: nil)
        let loggedInTabController = mainSB.instantiateViewController(identifier: "loggedInTabController")
        self.window!.rootViewController = loggedInTabController
Другие вопросы по тегам