Xcode 8,为非初始视图控制器

时间:2017-09-04 04:35:46

标签: swift uinavigationcontroller uibutton storyboard xcode8.2

我试图实现我认为简单的任务,但尽管这里有类似的帖子,但解决方案却让我无法实现....

我在Xcode 8 / swift 3中使用Main.storyboard来创建一个初始ViewController为UINavigationController的应用程序。然后我想推送到UITabBarController,它有两个与之关系的视图控制器:

override func viewDidLoad() {
    super.viewDidLoad()

    let mainStoryboard = UIStoryboard(name: "Main", bundle: nil)
    if let vc = mainStoryboard.instantiateViewController(withIdentifier: "test") as? UITabBarController {
        self.navigationController?.pushViewController(vc, animated: true)
    }
}

启动应用程序时,初始ViewController成功推送'到TabBarController /它的ViewControllers(下图)。我遇到的问题是在TabBarController ViewControllers中添加导航项/按钮后(在故事板中或以编程方式)按钮/导航项永远不会显示。

Storyboard setup

Simulator screenshot

我已经看过一些帖子,例如下面的链接,并且逐字地遵循建议的步骤,但没有解决问题。任何帮助将不胜感激!

Adding buttons to navigation controllers How to add buttons to navigation controller visible after segueing?

1 个答案:

答案 0 :(得分:1)

它没有显示,因为你的TabBarController也有自己的UINavigationBar。 ViewControllers位于TabBarController

您可以创建自定义TabBarController并处理标签操作 试试这段代码:

class TabBarController: UITabBarController {
  override var selectedViewController: UIViewController? {
    didSet {
      switch self.selectedViewController {
      case self.selectedViewController is FirstViewController:
        self.navigationItem.rightBarButtonItem = self.firstButton
      case self.selectedViewController is SecondViewControlller:
        self.navigationItem.rightBarButtonItem = self.secondButton
      default:
        break
      }
    }
  }
}