Загрузите Tabbarcontroller при нажатии кнопки - PullRequest
0 голосов
/ 30 августа 2018

Я создаю приложение, которое представляет собой приложение контроллера панели вкладок с элементами панели вкладок (Поиск, Логин, Еще). После успешного входа в систему пользовательская панель вкладок изменится на (Поиск, Учетная запись, Больше) с кнопкой выхода из системы в Подробнее. Проблема в том, что при выходе из системы он должен загрузить SearchViewController, а если снова нажать кнопку «Войти» в панели вкладок, соответствующая страница входа не отображается. Показывает черный экран.

@IBAction func btnLogOutClicked(_ sender: UIButton) 
{
    let hm = SearchVC()
    let tabOneBarItem = UITabBarItem(title: "Search", image: UIImage(named: "TabHome.png"), selectedImage: UIImage(named: "TabHome.png"))
    hm.tabBarItem = tabOneBarItem

    let lgn = LoginVC()
    let tabOneBarItem1 = UITabBarItem(title: "Login", image: UIImage(named: "tabAcc.png"), selectedImage: UIImage(named: "tabAcc.png"))
    lgn.tabBarItem = tabOneBarItem1

    let mropt = MoreVC()
    mropt.tabBarItem = UITabBarItem(tabBarSystemItem: .more, tag: 2)

    let controllers = [hm, lgn, mropt]
    self.tabBarController?.viewControllers = controllers
    self.tabBarController?.selectedIndex = 0
}

Как сделать так, чтобы контроллер панели вкладок отображался при нажатии кнопки «Выйти» и при щелчке элемента панели вкладок должен отображаться соответствующий контроллер представления.

Ответы [ 2 ]

0 голосов
/ 30 августа 2018

Есть несколько способов загрузить представление контроллеров представления:

Метод init по умолчанию, например SearchVC (), будет вызывать init (nibName: nil, bundle: nil) для вас. В данном случае происходит здесь .

Вы должны использовать только первые две опции, чтобы правильно загрузить вид из пера или раскадровки.

Управление просмотром здесь , чтобы увидеть больше.

0 голосов
/ 30 августа 2018

Вы должны загрузить каждый VC, как это, после того, как вы дали каждому идентификатор раскадровки

let hm = storyBoard.instantiateViewController(withIdentifier: "SearchVC") as! SearchVC 

Это

let hm = SearchVC()

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

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