Как и где бы вы использовали instantiateViewControllerWithIdentifier - PullRequest
4 голосов
/ 12 марта 2012
UIStoryboard *mainStoryboard = [UIStoryboard storyboardWithName:@"MainStoryboard"
                                                     bundle: nil];

MenuScreenViewController *controller = (MenuScreenViewController*)[mainStoryboard 
                                               instantiateViewControllerWithIdentifier: @"<Controller ID>"];

Где именно я пишу этот код, если мне нужно убедиться, что текущее представление создается с идентификатором?Что означает, что если я напишу какой-либо код для этого класса, он должен появиться при загрузке этого viewcontroller?Кроме того, как бы я использовал это?Я не хочу создавать экземпляр menuscreenviewcontroller.Что означает, что я должен сказать себя, но я использовал self.view, и это не работает.

Ответы [ 2 ]

7 голосов
/ 12 марта 2012

Вам необходимо нажать или представить созданный вами контроллер представления.Вы не можете напрямую изменять представления контроллеров, создавая их экземпляры.

Например, вам необходимо использовать этот код для запуска перехода (возможно, действие кнопки):

MenuScreenViewController* controller = (MenuScreenViewController*)[ourStoryBoard instantiateViewControllerWithIdentifier:@"<Controller ID>"];

controller.controlFlag = YES;
controller.controlFlag2 = NO; // Just examples

//These flags will be set before the viewDidLoad of MenuScreenViewController
//Therefore any code you write before pushing or presenting the view will be present after 

[self.navigationController pushViewController:controller animated:YES];
// or [self presentViewController:controller animated:YES];
2 голосов
/ 25 сентября 2013

Согласно ответу Uğur Kumru, с небольшим редактированием: если вы не используете Navigation Controller и разрабатываете под iOS 5.0+, вам нужно будет использовать:

MenuScreenViewController* controller = (MenuScreenViewController*)[ourStoryBoard instantiateViewControllerWithIdentifier:@"<Controller ID>"];
[self presentViewController:controller animated:YES completion:nil];

Если вы пропустите завершение: ноль, вы столкнетесь с ошибками

...