2015-04-28 3 views
0

У меня есть приложение, которое открывается на главную сцену и проверяет наличие токена, чтобы узнать, вошел ли пользователь в систему. Если все они хорошие, и он загружается. Если он не перенаправляет их на экран входа в систему, они входят в систему, а затем выводят их обратно на главный экран.Swift Hide Nav Bar на одной странице

Я пытаюсь скрыть навигационную панель только на странице входа, которая загружается, если нет токена. Я нашел много примеров кода, которые работают, как это:

self.navigationController.navigationBar.hidden = true 

что скрывать, однако они также скрыть панель навигации на первом экземпляре на главной странице. Как я могу избежать этого?

EDIT: Я пробовал следующее и до сих пор не повезло! Тот же результат navbar, скрывающийся на экране входа в систему, но скрытый, когда пользователь сначала перемещается на главную сцену. Любое другое перемещение на главный экран показывает навигационную панель. Как это происходит?

Попытка 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) 

ответ

0

в viewWillDissapear вы можете установить self.navigationController.navigationBar.hidden к ложным снова.

+0

То же самое и для обоих из них. Теперь у меня есть viewWillAppear ... navigationBar.Hidder = true на экране входа в систему, и панель скрыта. В первый раз, когда загружается основная сцена, нет навигационной панели (даже если viewWillDissappear снова на false). Когда я отхожу от этого экрана и обратно, хотя он появляется. Имеет ли значение, что это tableviewcontroller ?? – user2727128

0

Установить его скрыть в viewDidAppear. Мне пришлось использовать что-то подобное в моем приложении, и это сработало.

Override func viewWillAppear(){  Self.navigationController.navigationBar.hidden true 
} 
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() 
      } 
     } 
    } 

}