2015-12-12 2 views
0

Я пытаюсь нажать на viewController, однако я не буду скрывать навигацию в этом viewController. Однако, похоже, это не применимо, хотя я поставил ниже, прежде чем нажимать?Скрыть navigationBar на push not working

func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) { 
    let cameraViewController = ALCameraViewController(croppingEnabled: false) { image in 
     // Do something with your image here. 
     // If cropping is enabled this image will be the cropped version 
    } 
    cameraViewController.navigationController?.setNavigationBarHidden(true, animated: false) 
    self.navigationController?.pushViewController(cameraViewController, animated: true) 


} 
+0

В чем проблема? –

+0

sel.view.navigationController? .setNavigationBarHidden (true, animated: false) –

+0

Моя проблема в том, что я хочу скрыть навигацию только в CameraViewController –

ответ

3

альтернативный способ. Вы можете прямо скрыть/показать панель навигации на cameraViewController

-(void)viewWillAppear:(BOOL)animated{ 
    [super viewWillAppear:animated]; 
    [self.navigationController setNavigationBarHidden:YES]; //it hides 
} 

-(void)viewWillDisappear:(BOOL)animated{ 
    [super viewWillDisappear:animated]; 
    [self.navigationController setNavigationBarHidden:NO]; // it shows 
} 

--- Свифт ---

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

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

--- Swift 4.0 ---

override func viewWillAppear(_ animated: Bool) { 
    self.navigationController?.isNavigationBarHidden = true 
} 

override func viewWillDisappear(_ animated: Bool) { 
    self.navigationController?.isNavigationBarHidden = false 
} 
+0

Обязательно вызывайте 'super' в код Swift. – aasatt

0

Ваш код не работает, поскольку пытается получить доступ к свойству navigationController, когда он равен nil (quote from docs: «Это свойство равно нулю, если контроллер просмотра не встроен в контроллер навигации».)

Итак, если вам нужно скрыть панель навигации в указанном контроллере представления, используйте код из Keyur или, если вы не можете изменить код этого контроллера представления и не можете подклассифицировать его, вы можете скрыть/показать навигационную панель внутри - navigationController:willShowViewController:animated: в вашем контроллере диспетчера навигации

0

В раскадровках вам нужно выбрать свой ViewController и перейти в Редактор-> Embebed In-> Navigation Controller. У меня есть два контроллера навигации, один в корне, а другой - мой ViewController. И navigationBarHidden true или false, отлично работает для меня, в моем случае.

+0

Другим случаем является то, что вы используете Log Out, и вы возвращаетесь к InitViewController, если вы возвращаетесь с идентификатором Storiesboards, вам нужно поместить свой идентификатор в NavigationController в свой InitViewController. –