【发布时间】:2018-08-27 17:15:17
【问题描述】:
我在我的应用中使用了导航项。在注销方法中,我已经弹出到根视图控制器,即我的 loginViewController,但这样做时导航栏会被删除。我尝试将代码加载到 viewWillAppear 中,但它仍然无法正常工作。你能帮帮我吗?
这是我的注销代码:
@IBAction func btnLogOutClicked(_ sender: Any) {
let log : LoginViewController = self.storyboard?.instantiateViewController(withIdentifier: "LoginViewController") as! LoginViewController
let window:UIWindow = UIApplication.shared.keyWindow!
let navControl : UINavigationController = window.rootViewController as! UINavigationController
if (!(navControl .isEqual(log)))
{
window.rootViewController = log
}
navControl.popToRootViewController(animated: true)
}
My viewWillAppear-
override func viewWillAppear(_ animated: Bool) {
self.navigationController?.isNavigationBarHidden = false
self.navigationItem.hidesBackButton = true
self.navigationItem.title = "Select Client"
// create a new butto
let button: UIButton = UIButton(type: UIButtonType.custom)
//set image for button
button.setImage(UIImage(named: "logo-icon"), for: UIControlState.normal)
//set frame
button.frame = CGRect(x: 0, y: 0, width: 50, height: 30)
let barButton = UIBarButtonItem(customView: button)
//assign button to navigationbar
self.navigationItem.leftBarButtonItem = barButton
}
这是我的故事板-
我正在使用 pushViewController 从登录视图控制器访问标签栏控制器
【问题讨论】:
-
将
super.viewWillAppear(animated)添加为viewWillAppear(_ animated: Bool)方法的第一行代码 -
并且也使用
self.navigationController?.setNavigationBarHidden(false, animated: false)而不是self.navigationController?.isNavigationBarHidden = false -
感谢您的帮助。我试图添加它,但它还没有工作。当我放置一个调试点并执行“po self.navigationController”时,它会打印“nil”。
-
@Amit navControl.rootViewController = log 语法错误。因为它是一个只能获取的属性。
标签: ios swift uinavigationcontroller uinavigationbar