Swift Hide Nav Bar在一页上

时间:2015-04-28 05:08:45

标签: swift

我有一个应用程序打开主场景并检查令牌以查看用户是否已登录。如果它们都是好的并且加载。如果没有,它会将它们重定向到登录屏幕,然后登录,然后将它们推回到主屏幕。

我正在尝试隐藏登录页面上的导航栏,如果没有令牌,则会加载。我找到了很多代码实例,如下所示:

self.navigationController.navigationBar.hidden = true

隐藏它,但它们也隐藏了主页第一个实例上的导航栏。我怎么能避免这个?

编辑:我尝试过以下但仍然没有运气!导航栏隐藏在登录屏幕上但在用户第一次移动到主场景时隐藏的结果相同。对主屏幕的任何其他移动都会显示导航栏。这是怎么回事?

尝试1:

ON LOGIN PAGE

In viewDidLoad() -> self.navigationController!.navigationBar.hidden = true


ON MAIN PAGE

In viewDidLoad() -> self.navigationController!.navigationBar.hidden = false

尝试2

ON LOGIN PAGE

override func viewWillAppear(animated: Bool) {
    self.navigationController!.navigationBarHidden = true
}

ON MAIN PAGE

override func viewWillAppear(animated: Bool) {
    self.navigationController!.navigationBarHidden = false
}

尝试3

ON LOGIN PAGE

override func viewWillAppear(animated: Bool) {
    self.navigationController!.navigationBarHidden = true
}

ON MAIN PAGE

override func viewWillDisappear(animated: Bool) {
    self.navigationController!.navigationBarHidden = false
}

在用户登录后,它是否与我移动到主页面的方式有关?

ON LOGIN PAGE:
let secondViewController = self.storyboard!.instantiateViewControllerWithIdentifier("FriendsTableViewController") as! UITableViewController
//go to the main page
self.navigationController!.pushViewController(secondViewController, animated: true)

3 个答案:

答案 0 :(得分:0)

在viewWillDissapear中,您可以再次将self.navigationController.navigationBar.hidden设置为false。

答案 1 :(得分:0)

将其设置为隐藏在 viewDidAppear 中。我不得不在我的应用程序中使用这样的东西并且它有效。

Override func viewWillAppear(){     Self.navigationController.navigationBar.hidden true
}

答案 2 :(得分:0)

试试这个:

 override func viewWillAppear(animated: Bool) {
    super.viewWillAppear(animated)
        /** remove the shadow image (border) altogether from nav bar **/
    for parent in self.navigationController!.navigationBar.subviews {
        for childView in parent.subviews {
            if(childView is UIImageView) {
                childView.removeFromSuperview()
            }
        }
    }

}