代码之家  ›  专栏  ›  技术社区  ›  lhammer

Xcode 8,为非初始视图控制器向导航栏添加UI按钮

  •  0
  • lhammer  · 技术社区  · 8 年前

    我正在努力实现我认为是一项简单的任务,但尽管在这里有类似的帖子得到了回答,解决方案还是让我难以捉摸。。。。

    Main.storyboard 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成功地“推”到tabbar控制器/其ViewControllers(下图)。我遇到的问题是在tabbar控制器ViewControllers中添加导航项/按钮后(在故事板中或以编程方式),按钮/导航项永远不会显示。

    Storyboard setup

    Simulator screenshot

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

    1 回复  |  直到 8 年前
        1
  •  1
  •   Yerken    8 年前

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