从另一个类 Swift 访问 navigationItem.title
Posted
技术标签:
【中文标题】从另一个类 Swift 访问 navigationItem.title【英文标题】:Access navigationItem.title from another class Swift 【发布时间】: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 中实例化 CustomNavigation
:var customNavigation = CustomNavigation()
任何帮助将不胜感激!
【问题讨论】:
【参考方案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
【讨论】:
以上是关于从另一个类 Swift 访问 navigationItem.title的主要内容,如果未能解决你的问题,请参考以下文章
从另一个文件导入类后,React Navigation Switch Navigator 不起作用