![](/img/trans.png)
[英]kukushi/SideMenu Reveal Menu not working from presented anotherViewController
[英]kukushi/SideMenu navigation title not changing
我正在使用 kukushi 的 SideMenuSwift。
我使用以下代码以编程方式创建一个 SideMenuController:
extension DeviceScanViewController {
static func instantiate() -> UIViewController {
let homeViewController = UIStoryboard(name: "DeviceScan", bundle: nil).instantiateInitialViewController()!.embedInNavigationController()
let menuVC = MenuViewController.instantiate()
return SideMenuController(contentViewController: homeViewController, menuViewController: menuVC)
}
}
导航栏标题显示此图像中的应用程序名称(“Appname”):
我想将导航标题更改为其他名称,但我不知道如何更改。
我尝试了以下方法:
override func viewDidLoad() {
super.viewDidLoad()
self.title = "Test123"
self.navigationController?.navigationBar.topItem?.title = "Test456"
self.navigationItem.title = "Test789"
sideMenuController?.title = "Test123"
sideMenuController?.navigationController?.navigationBar.topItem?.title = "Test456"
sideMenuController?.navigationItem.title = "Test789"
}
这些方法都不起作用。 导航标题仍然显示应用名称。 使用 SideMenuSwift 时如何更改导航栏标题?
我发现导航栏的标题是在名为 reachabilityChanged 的 UIViewController 扩展内的一个函数中设置的。 每当更新应用程序的连接状态时,都会自动调用此函数。 因此,每次加载某些视图时,它都会使用“Appname”或“Appname(离线)”覆盖导航栏标题。 所以它与 kukushi 的 SideMenu 无关。
func reachabilityChanged(_ isConnected: Bool) {
let navBarColor: UIColor = isConnected ? .white : .offlineOrange
let navBarTextColor: UIColor = isConnected ? .defaultPurple : .white
updateViewStyle(backgroundColor: .white, navBarColor: navBarColor, navBarTextColor: navBarTextColor)
//TODO: Localize
title = isConnected ? "Appname".localized : "Appname (offline)".localized
}
我设法通过将以下代码添加到视图控制器并设置一个标签来解决它,我需要为其设置标题为“Appname”或“Appname(离线)”:
override func viewDidLoad() {
super.viewDidLoad()
// Set view tag 111 so that in UIViewController extension function
// reachabilityChanged Appname/Appname (offline) navigation title is set
// for this view and not for Settings
self.view.tag = 111
}
以及第二个视图控制器:
override func viewDidLoad() {
super.viewDidLoad()
// Set view tag 112 so that in UIViewController extension function
// reachabilityChanged Appname/Appname (offline) navigation title is set
// for this view and not for Settings
self.view.tag = 112
}
然后我将函数 reachabilityChanged 更改为以下内容:
func reachabilityChanged(_ isConnected: Bool) {
let navBarColor: UIColor = isConnected ? .white : .offlineOrange
let navBarTextColor: UIColor = isConnected ? .defaultPurple : .white
updateViewStyle(backgroundColor: .white, navBarColor: navBarColor, navBarTextColor: navBarTextColor)
//TODO: Localize
// view tags 111 and 112 are Device Scan view and Manual Scan view
if(self.view.tag == 111 || self.view.tag == 112){
title = isConnected ? "Appname".localized : "Appname (offline)".localized
}
}
现在,如果我将 self.title 设置为不同视图控制器中的另一个文本,它就可以工作了。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.