【问题标题】:Access navigationItem.title from another class Swift从另一个类 Swift 访问 navigationItem.title
【发布时间】:2020-01-17 23:50:20
【问题描述】:

如何从单独的类访问导航控制器内的标题?我通过 Storyboard 将我的 mainVC 嵌入到导航控制器中。我可以从viewDidLoad 内部访问标题,就像self.navigationItem.title = "MyTitle" 一样。但是,我需要像这样从单独的类'CustomNavigation 访问标题:

class: CustomNavigation: UIViewController() {
   override func viewDidLoad(){
      super.viewDidLoad()

      func createCustomNav(){

         self.navigationItem.title = "MyTitle"
      }

   }

}

不幸的是,它不起作用。我也试过这个:

func createCustomNav(){

   let nav = UINavigationBar()
   let title = UINavigationItem(title: "MyTitle")
   nav.setItems([title], animated: false)
   self.view.addSubview(nav)
}

这也不起作用。我没有收到任何错误。

我在 mainVC 中实例化 CustomNavigationvar customNavigation = CustomNavigation()

任何帮助将不胜感激!

【问题讨论】:

    标签: swift uinavigationcontroller uinavigationitem


    【解决方案1】:

    建立一个描述你想要完成的工作的协议。

    protocol NavigationTitler {
        func updateTitle(with title: String)
    }
    

    定义你的班级将如何使用协议。

    class CustomNavigation: UINavigationController {
        var titleDelegate: NavigationTitler?
        func work() {
            if let del = titleDelegate {
                del.updateTitle(with: "Title from other object")
            }
        }
    }
    

    实施协议(这是给你的mainVC)。

    class ViewController: UIViewController, NavigationTitler {
        var customNavigation: CustomNavigation?
        func updateTitle(with title: String) {
            self.navigationItem.title = title
        }
        func buildCustomController() {
            customNavigation = CustomNavigation()
            customNavigation!.titleDelegate = self
        }
    }
    

    【讨论】:

      【解决方案2】:

      从 UITabBarItem 中获取标题,在当前 VC 中用作标题:

      //Titel einstellen
      let x = navigationController?.tabBarItem.title ?? ""
      self.title = x //titel in VC
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-11-04
        • 2015-06-16
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多