Панель навигации не отображается при представлении представления?

#ios #swift #storyboard

#iOS #swift #раскадровка

Вопрос:

В другом файле я создаю экземпляр моего контроллера представления из другой раскадровки и представляю его следующим образом:

 let viewController:UIViewController = UIStoryboard(name: "UserProfile", bundle: nil).instantiateViewControllerWithIdentifier("profileID") as! ProfileViewController
self.presentViewController(viewController, animated: true, completion: nil)
  

В моей раскадровке у меня есть правильный идентификатор раскадровки, и я встроил свой контроллер представления в UINavigationController. Я также установил начальный контроллер представления на UINavigationController.

Почему она не отображается?

Ответ №1:

создайте контроллер объекта представления, затем добавьте к нему контроллер навигации, а затем представьте его :

 let VC1 = self.storyboard!.instantiateViewControllerWithIdentifier("MyViewController") as! ViewController
let navController = UINavigationController(rootViewController: VC1) // Creating a navigation controller with VC1 at the root of the navigation stack.
self.presentViewController(navController, animated:true, completion: nil)
  

Комментарии:

1. Вы также можете сделать то же самое с помощью objective-c.

Ответ №2:

Итак, вы представляете контроллер представления (обратите внимание, это не контроллер навигации).

Что вы можете сделать:

  1. Нажмите на контроллер представления

     let viewController:UIViewController = UIStoryboard(name: "UserProfile", bundle: nil).instantiateViewControllerWithIdentifier("profileID") as! ProfileViewController
    [self.navigationController pushViewController:viewController animated:YES];
      
  2. Представьте контроллер навигации

     let viewController:UIViewController = UIStoryboard(name: "UserProfile", bundle: nil).instantiateViewControllerWithIdentifier("profileID") as! ProfileViewController
    
    let navigationController = UINavigationController(rootViewController: viewController)
    
    self.presentViewController(viewController, animated: true, completion: nil)
      

Ответ №3:

Для тех, кто все еще использует Objective-C:

 UIStoryboard *sb = [UIStoryboard storyboardWithName: @"Storyboard" bundle: [NSBundle mainBundle]];
ViewController *vc = [sb instantiateInitialViewController];
UINavigationController *nc = [[UINavigationController alloc] initWithRootViewController: vc];
[self presentViewController:nc animated:YES completion:nil];
  

Не забудьте нажать кнопку:

введите описание изображения здесь