Как создать макет UIViewController в раскадровке, а затем использовать его в коде? - PullRequest
12 голосов
/ 13 ноября 2011

У меня есть раскадровка в моем приложении iOS 5.

Там я создал несколько экранов, и он отлично работает.

Однако есть один контроллер представления, который я создаю в коде не в результате действия пользовательского интерфейса, а в конце обработки данных. Я хотел бы показать этот контроллер представления как modalViewController, но также иметь его разработанный в редакторе раскадровки.

Возможно ли это? Используя перья, я сделал это так:

ResultsController *rc = [[ResultsController alloc] initWithNibName:@"ResultsController"
                                                            bundle:nil];
[self.navigationController presentModalViewController:rc animated:YES];
[rc release];

Прямо сейчас у меня нет нигде файлов, так как мне это сделать?

Ответы [ 3 ]

35 голосов
/ 13 ноября 2011

Посмотрите на класс UIStoryboard. Существует метод instantiateViewControllerWithIdentifier. Поэтому вам нужно установить Identfier в редакторе раскадровки для вашего ResultsController ViewController.

Вы можете сделать что-то вроде этого

UIViewController *viewController = 
   [[UIStoryboard storyboardWithName:@"MainStoryboard" 
                              bundle:NULL] instantiateViewControllerWithIdentifier:@"ResultsController"];

[self presentModalViewController:viewController animated:NO];
2 голосов
/ 17 января 2012

В вашей раскадровке:

  1. Добавьте универсальный UIViewController.
  2. С помощью Identity Inspector установите его собственный класс в качестве ResultsController.
  3. Создайте модальный переходиз вашего контроллера просмотра исходного кода в ResultsController
0 голосов
/ 03 ноября 2017

Для Swift 4

let viewController = UIStoryboard.init(name: "MainStoryboard", bundle: nil).instantiateViewController(withIdentifier: "ResultsController")
self.present(viewController, animated: true, completion: nil)
...