Скрыть вид при нажатии на tabBar - Swift - PullRequest
1 голос
/ 13 июня 2019

У меня есть контроллер вида, как показано ниже.

enter image description here

Этот вид прикреплен с помощью tabBarController.В tabBarController есть 5 viewControllers, и я должен представить пятый viewController для tabBar с другой страницы.Поэтому я использовал приведенные ниже коды для представления этого viewController

@IBAction func onClickUserProfile(_ sender: Any) {
        let navVc = self.storyboard?.instantiateViewController(withIdentifier: "ProfileVC")as! ProfileVC
        navVc.userId = Int(self.userId)
        navVc.navigationItem.hidesBackButton = true
        navVc.tabBarController?.tabBar.isHidden = false
        self.navigationController?.pushViewController(nxtVc, animated: true)
    }

Но после выполнения кода он выдает контроллер представления в виде изображения ниже.Представление подвергается tabBar.Кто-нибудь поможет мне перейти к представлению tabBar.

enter image description here

1 Ответ

1 голос
/ 13 июня 2019

Вам нужно установить выбранное UIViewController из UITabBarController, что-то вроде этого должно работать.

self.tabBarController?.selectedViewController = self.tabBarController?.viewControllers![1]

, где tabBarController?.viewControllers возвращает массив текущих ViewControllers, встроенных в UITabBarController.

Ваш код должен быть примерно таким.

@IBAction func onClickUserProfile(_ sender: Any) {
        let vc =  self.tabBarController?.viewControllers![1] as! ProfileVC // use your index
        vc.userId = Int(self.userId)
        self.tabBarController?.selectedViewController = vc
    }

Примечание : не создавать экземпляр UIViewController, поскольку .instantiateViewController(withIdentifier:) использует уже существующее в массиве tabBarController?.viewControllers, создание новых Экземпляр будет рассматриваться как новый и дает вам проблему там.

...