【问题标题】:Xcode 8, adding UIButtons to NavigationBar for non initial view controllersXcode 8,将 UIButton 添加到非初始视图控制器的导航栏
【发布时间】:2017-09-04 04:35:46
【问题描述】:

我正在努力实现我认为是一项简单的任务,但是尽管这里有类似的帖子得到了回答,但解决方案却让我望而却步....

我在 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 中或以编程方式)中添加导航项/按钮后,按钮/导航项永远不会显示。

Storyboard setup

Simulator screenshot

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

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

【问题讨论】:

    标签: swift uinavigationcontroller uibutton storyboard xcode8.2


    【解决方案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
          }
        }
      }
    }
    

    【讨论】:

    • 知道了 - 谢谢。关于如何让他们展示的任何建议?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-10-19
    • 1970-01-01
    • 2014-07-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多