2012-01-13 3 views
55

Я хочу изменить код ниже с помощью раскадровки с помощью Xcode 4.2.Как изменить «initwithNibName» в раскадровке?

UIViewController * example  = [[ExampleViewController alloc] initWithNibName:@"ExampleViewController" bundle:nil]; 

Файл примера ExampleViewController.xib существует. , но я хочу сделать это с раскадровкой. , пожалуйста, помогите мне. (I'm not good on English. Извините)

ответ

132

UIStoryboard класс является вашим другом:

UIStoryboard* sb = [UIStoryboard storyboardWithName:@"mystoryboard" 
               bundle:nil]; 
UIViewController* vc = [sb instantiateViewControllerWithIdentifier:@"ExampleViewController"]; 
+0

Спасибо ~ ^^ Ваш ответ очень полезен. – jokor7

+0

Стивен, спасибо! Я искал довольно много времени, пытаясь понять, как создать экземпляр представления Storyboard. Ваш ответ (и вопрос jokor7) похожи на свежий стакан воды в середине сухой пустыни Сахара. – bejonbee

+5

Это действительно твой друг. Если у вас есть только одна главная раскадровка, вам не нужно ее инициализировать, как описано выше, но вы можете просто позвонить: '[self.storyboard instantiateViewControllerWithIdentifier: @" "];' – JCoster22

8
  • Если он все еще находится в собственном файле xib, то вы ничего не меняете.
  • Если вы переместили все в раскадровку, вам часто не нужно было это делать, поскольку вы связывали бы между контроллерами представлений с помощью segues.

Если ни один из вышеупомянутых правда, то ваш контроллер представления на раскадровке, но не переходить не подключается к нему, то вы хотите метод UIStoryboard в instantiateViewControllerWithIdentifier: описано в the documentation. Вы должны установить идентификатор в раскадровке, чтобы это работало.

+0

благодаря @jrturton ^^ Мой взгляд контроллер на раскадровке, но не переходить к нему. И измените код initWithNibName на 'UIViewController * example = [self.view instantiateViewControllerWithIdentifier: @ "ExampleView"];'. Но это ошибка. Не равен ли оба кода? – jokor7

+1

@ jokor7 Вы не отправляете 'instantiateViewControllerWithIdentifier:' на self.view или любое другое представление, вы отправляете его в раскадровку. В частности, вам нужно отправить его в * * раскадровку, содержащую контроллер вида. См. Класс UIStoryboard, пожалуйста. – Caleb

+0

@ jokor7 ничего не может добавить к комментарию Калеба. С этим и ответом Стефана у вас должно быть все, что вам нужно. – jrturton

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