Условный выбор viewcontroller за элементом панели вкладок - PullRequest
0 голосов
/ 29 апреля 2020

У меня проблемы с пониманием того, как я могу выбрать, какой контроллер представления находится за элементом панели вкладок. Таким образом, у меня есть контроллер панели вкладок в виде root моего приложения. Эта панель вкладок содержит 4 элемента, одним из которых является вкладка «Аккаунт». Я хочу сделать следующее: sh - если пользователь вошел в систему, он отправит его в контроллер представления обзора учетной записи, но когда он не вошел в систему, он получит экран для входа.

Итак, архитектура должен быть одинаковым в любом случае. Я хочу начать с того же экрана (мой контроллер панели вкладок), но только если пользователь нажимает на вкладку учетной записи, ему нужно выбрать один из двух контроллеров представления.

Возможно ли это? Если да, может кто-нибудь объяснить мне эту концепцию?

Спасибо за помощь!

С уважением

Ответы [ 2 ]

0 голосов
/ 29 апреля 2020
func tabBarController(_ tabBarController: UITabBarController,
                      shouldSelect viewController: UIViewController) -> Bool{
    let index = tabBarController.viewControllers?.index(of: viewController)
    if index == 2{ // Index of Account tab
        let userLoginStatus = NSUserDefaults.standardUserDefaults().boolForKey("isUserLoggedIn")

        if !(userLoginStatus)
        {
            let mainStoryBoard: UIStoryboard = UIStoryboard(name: "Main", bundle: nil)
            let loginVC = mainStoryBoard.instantiateViewControllerWithIdentifier("Login") as! LoginViewController
            window!.rootViewController = loginVC
            window!.makeKeyAndVisible()
        }
    }
    return true// you decide
}

ПРИМЕЧАНИЕ : для достижения желаемого результата можно использовать метод делегата shouldSelect.

Ссылка : - https://developer.apple.com/documentation/uikit/uitabbarcontrollerdelegate/1621166-tabbarcontroller?language=objc

0 голосов
/ 29 апреля 2020

вам нужно заменить контроллер root на контроллер вкладок, чтобы войти в viewcontroller, например, когда пользователь не может войти в систему, он перенаправляет на signinviewController

let mainStoryboard: UIStoryboard = UIStoryboard(name: "Main", bundle: nil)
var vc = mainStoryboard.instantiateViewControllerWithIdentifier("controllerIdentifiersetonvStroyboard") as SignViewController  
let appDelegate = UIApplication.shared.delegate as! AppDelegate
appDelegate.window?.rootViewController = vc
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...