0

У меня есть три контроллера вида (vc1, vc2, vc3) и два навигационных контроллера (nav1, nav2).PresentViewController из представленногоViewController не показывает навигационную панель

  • nav1 - это точка входа в раскадровку.
  • vc1 - это rootViewController nav1.
  • vc2 является rootViewController nav2.
  • nav2 представлен с vc1 через nav1.

Теперь, когда я пытался представить vc3 с vc2 через nav2, панель навигации не отображается.

ответ

1

Вам необходимо представить свой контроллер с помощью navigationController.

ViewController *objVC = [self.storyboard instantiateViewControllerWithIdentifier:@"viewcontrollerid"]; 
UINavigationController *navController = [[UINavigationController alloc]initWithRootViewController:objVC]; 
[self.navigationController presentViewController:navController animated:YES completion:nil]; 
+0

Вы хотите сказать, что каждый раз, когда я представляю контроллер представления, мне нужно создать контроллер навигации? –

+0

@TapasPal На самом деле всякий раз, когда вы представляете 'VC', его, как и один' VC', выше предыдущего VC. В основном представленный VC не имеет никакого Nav Control, но у предыдущего VC есть. Поэтому, если вы хотите, чтобы Nav Cntrl в 'VCB', то нажмите' VCA' или найдите Nav Cntrl VCA (как родительский элемент 'VCB') в классе VCB. –

+0

Нет необходимости сначала проверять, существует ли контроллер навигации, а затем использовать его, чтобы создать новый. – KKRocks

0

Теперь, как IOS работает, он никогда не даст вам экземпляр навигационного контроллера в представленном контроллере представления, потому что когда вы представить контроллер представления, он не добавляется в стек ViewController в навигации контроллер. Причина, по которой вы можете видеть контроллер навигации в двух других, заключается в том, что вы представляете контроллер навигации и не видите контроллер.