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