Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Swift 从另一个类访问navigationItem.title_Swift_Uinavigationcontroller_Uinavigationitem - Fatal编程技术网

Swift 从另一个类访问navigationItem.title

Swift 从另一个类访问navigationItem.title,swift,uinavigationcontroller,uinavigationitem,Swift,Uinavigationcontroller,Uinavigationitem,如何从单独的类访问导航控制器中的标题?我通过故事板将我的mainVC嵌入到导航控制器中。我可以从同一类中的viewDidLoad中访问标题,就像这样self.navigationItem.title=“MyTitle”。但是,我需要从单独的类“CustomNavigation访问标题,如下所示: class: CustomNavigation: UIViewController() { override func viewDidLoad(){ super.viewDidLoad

如何从单独的类访问导航控制器中的标题?我通过故事板将我的
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中实例化
CustomNavigation
var CustomNavigation=CustomNavigation()


任何帮助都将不胜感激

设置一个协议,描述您想要完成的工作

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


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

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