Изменить tabbarindex или setviewcontroller при запуске приложения - PullRequest
0 голосов
/ 05 июня 2018

Я хочу изменить viewControllers на вкладке, если пользователь! = Nil.

У меня есть два viewControllers, которые можно изменить:

1) ProfileVC

2) SignInVC

Но когда мое приложение запускается, пользователь видит другой viewController, он NewsVC .

Мне нужно сделать проверку перед запуском приложения и заменить viewController на панели вкладок.

Примерно так в AppDelegate.swift:

let storyboard = UIStoryboard(name: "Main", bundle: nil)

    if Auth.auth().currentUser != nil {
        let profileVC = storyboard.instantiateViewController(withIdentifier: "ProfileVC")
        window?.rootViewController = profileVC
    } else {
        let loginVC = storyboard.instantiateViewController(withIdentifier: "SignInVC")
        window?.rootViewController = loginVC
    }
}

Но это не правильный путь.Как мне изменить индекс или viewController?

Ответы [ 2 ]

0 голосов
/ 05 июня 2018

Вам необходимо установить индекс для viewcontroller.

Вот как вы делаете это программно:

    self.window = UIWindow(frame: UIScreen.main.bounds)
    let nav1 = UINavigationController()
    let mainStoryboard: UIStoryboard = UIStoryboard(name: "Main", bundle: nil)
    let profileVC = mainStoryboard.instantiateViewController(withIdentifier: "ProfileVC") as! //your VC
    nav1.viewControllers = [profileVC]

    let nav2 = UINavigationController()
    let loginVC = mainStoryboard.instantiateViewController(withIdentifier: "SignInVC") as! //Your VC 
    nav2.viewControllers = [loginVC]

    let tabController = UITabBarController()
    tabController.viewControllers = [profileVC, loginVC]
    tabController.selectedIndex = 0 //This line will solve your question & take you to the profileVC
    self.window!.rootViewController =  tabController
    self.window?.makeKeyAndVisible()
0 голосов
/ 05 июня 2018

Вам необходимо создать подкласс UITabBarController и управлять его viewControllers массивом

class MainTabBarController: UITabBarController {

    override func awakeFromNib() {
        super.awakeFromNib()

       // if you will say force - unwrapped it's the developer job to keep track here          

        let signUp = self.viewControllers![0]

        let profile = self.viewControllers![1]

        let newsFeeds = self.viewControllers![2]

        if user == nil {

            self.viewControllers = [signUp] // leave signup only

        }

    }


}

, назначить MainTabBarController вкладке в IB

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...