Xcode 8、为非初始视图控制器添加UIButtons到NavigationBar

Xcode 8, adding UIButtons to NavigationBar for non initial view controllers

我正在努力完成我认为是一项简单的任务,但是尽管这里的类似帖子得到了回答,但我还是找不到解决方案....

我在 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 成功 'pushes' 到 TabBarController/it 的 ViewController(下图)。我遇到的问题是在 TabBarController ViewController 中添加导航 items/buttons 之后(在 Storyboard 中或以编程方式)按钮/导航项永远不会显示。

Storyboard setup

Simulator screenshot

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

How to add buttons to navigation controller visible after segueing?

没有显示,因为你的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
      }
    }
  }
}