ios kukushi/侧边菜单导航标题未更改

bnl4lu3b  于 2022-12-15  发布在  iOS
关注(0)|答案(1)|浏览(162)

我正在使用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时,我如何更改导航栏标题?

taor4pac

taor4pac1#

我发现导航栏的标题是在UIViewController的一个名为reachabilityChanged的扩展函数中设置的。每当应用程序的连接状态更新时,都会自动调用这个函数。因此,每次加载一些视图时,它都会用“Appname”或“Appname(offline)"覆盖导航栏标题。因此,它与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
  }

我设法解决了这个问题,方法是将以下代码添加到视图控制器中,并设置一个需要将title设置为“Appname”或“Appname(offline)"的标记:

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设置为不同视图控制器中的另一个文本,它就可以工作了。

相关问题