从另一个类 Swift 访问 navigationItem.title



如何从单独的类访问导航控制器内的标题?我通过情节提要将mainVC嵌入到导航控制器中。我可以像这样self.navigationItem.title = "MyTitle"从同一类内部从viewDidLoad内部访问标题。但是,我需要从单独的类'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)
}

这也行不通。我没有收到任何错误。

我在主VC中实例化CustomNavigationvar 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(。

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

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

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

最新更新