2015-04-06 3 views
0

Я использую следующий код для запуска контроллера вида. Этот контроллер не создается с нуля. Скорее, я создал и разработал его в раскадровке, дал ему имя, встроил его в навигационный контроллер, чтобы он имел панель навигации и создал кнопки отмены и завершения, дал ей название, а приведенный ниже код запускает его.Заголовок и навигационная панель исчезают при запуске контроллера просмотра с кодом

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

Мой код для запуска VC, созданного в раскадровке.

- (void) editView:(id) sender 
{ 
    NSLog(@"launch button pressed"); 
    UIStoryboard *storyBoard = self.storyboard; 
    IDEditVC *editVC = 
    [storyBoard instantiateViewControllerWithIdentifier:@"editvc"]; 
editVC.item = _item; 
[self presentModalViewController:editVC animated:YES]; 
    } 
+0

Вам нужно создать экземпляр и представить навигационный контроллер, а не IDEditVC. – rdelmar

+0

Вопрос, на который вы ссылаетесь, не имеет принятого ответа. Если вы считаете, что это дубликат, вам нужно задать вопрос, на который был дан ответ, а не на то, где ответ не работает для плаката. – user1904273

+0

Только потому, что OP не реализовал его правильно. Это правильный способ сделать это. – rdelmar

ответ

1

Я думаю, что это происходит, что так как вы непосредственно инстанцировании контроллер представления по имени он получает только что от раскадровки, а не встраивать ее в контроллер nav.

Попробуйте это:

  1. В раскадровку, сделать Навигационный контроллер начального/корневой View Controller для раскадровки
  2. Вместо инстанцировании по имени, используйте метод instantiateInitialViewController UIStoryboard в.

EDIT: на основе ваших комментариев ниже, вы можете попробовать это:

- (void) editView:(id) sender 
{ 
    NSLog(@"launch button pressed"); 
    UIStoryboard *storyBoard = self.storyboard; 
    IDEditVC *editVC = 
    [storyBoard instantiateViewControllerWithIdentifier:@"editvc"]; 
    editVC.item = _item; 

    UINavigationController *nav = [UINavigationController alloc] initWithRootViewController: IDEditVC]; 
    // Do whatever setup you want to here for your title bar, etc 
    [self presentModalViewController:nav animated:YES]; 
} 
+0

В этом приложении много экранов и совершенно другой контроллер - это контроллер начального представления. – user1904273

+0

Затем сломайте viewcontroller, который вы представляете модально, в свою собственную раскадровку, или создайте экземпляр UINavigationController в коде и вставьте в него свой контроллер вида. – MahatmaManic

+0

Как бы создать экземпляр контроллера nav, а не обычного vc? Просто дайте ему имя и замените имя? – user1904273

0

Попробуйте использовать PushViewController вместо Instantiate:

How to push viewcontroller (view controller)?

Успехов

+0

Контроллер Push View работал для кнопок навигации, но название по-прежнему не отображается. – user1904273

+0

Ну, вы всегда можете установить заголовок, но я вижу, что у вас уже есть ваш ответ;) –

 Смежные вопросы

  • Нет связанных вопросов^_^