繁体   English   中英

kukushi/SideMenu 导航标题不变

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM