Программно нажимая ViewController - PullRequest
0 голосов
/ 19 ноября 2018

Я пытаюсь запустить ViewController программно.

Код:

var plus = UIButton()

plus.addTarget(self, action: #selector(plusPressed), for: .touchUpInside)

@objc func plusPressed() {
    print("plus")
    let createJournalVC = CreateJournalViewController()
    self.navigationController?.pushViewController(createJournalVC, animated: true)
}

Что работает:

  1. После нажатия кнопки на консоль выводится знак «плюс».

Что не работает:

  1. ViewController не выдвигается.

Подробнее

  • Я использую контроллер навигации и панель вкладок.
  • Я делаю это только программно, никаких раскадровок.
  • На консоль не выводится ошибка, на самом деле ничего не происходит.

Ответы [ 2 ]

0 голосов
/ 19 ноября 2018

Кажется, navigationController - это nil, поэтому контроллер представления не выдвигается.

0 голосов
/ 19 ноября 2018

Если TabBarController идет после NavigationController, тогда NavigationController может стать нулевым. Лучше сначала поместить TabBarController, а затем поместить каждый ViewController (связанный с каждой вкладкой) в собственный NavigationController.

Раскадровка:

Each Tab's ViewController gets their own NavigationController

Программный:

Вам нужно создать свой TabBarController следующим образом ...

window = UIWindow(frame: UIScreen.main.bounds)
let tabCon = UITabBarController()
let navCon1 = UINavigationController(rootViewController: ViewController())
let navCon2 = UINavigationController(rootViewController: CreateJournalViewController())
let navCon3 = UINavigationController(rootViewController: AnotherViewController())
tabCon.viewControllers = [navCon1, navCon2, navCon3]
tabCon.tabBar.items?[0].title = NSLocalizedString("VC", comment: "comment")
tabCon.tabBar.items?[1].title = NSLocalizedString("CJV", comment: "comment")
tabCon.tabBar.items?[2].title = NSLocalizedString("AVC", comment: "comment")
window?.rootViewController = tabCon
window?.makeKeyAndVisible()
...