#iphone #ios5 #modalviewcontroller #uistoryboard
#iPhone #ios5 #modalviewcontroller #uistoryboard
Вопрос:
У меня есть раскадровка в моем приложении для iOS 5.
Там я создал несколько экранов, и это работает отлично.
Однако есть один контроллер просмотра, который я создаю в коде, не в результате действия пользовательского интерфейса, а в конце обработки данных. Я хотел бы показать этот контроллер просмотра затем как modalViewController, но также разработать его в редакторе раскадровки.
Возможно ли это? Используя nibs, я сделал это следующим образом:
ResultsController *rc = [[ResultsController alloc] initWithNibName:@"ResultsController"
bundle:nil];
[self.navigationController presentModalViewController:rc animated:YES];
[rc release];
Прямо сейчас у меня действительно нет файлов nib, так как же мне это сделать?
Ответ №1:
Взгляните на класс UIStoryboard. Существует метод instantiateViewControllerWithIdentifier. Итак, вам нужно установить Identfier в редакторе Storyboard для вашего ResultsController ViewController.
Вы можете сделать что-то вроде этого
UIViewController *viewController =
[[UIStoryboard storyboardWithName:@"MainStoryboard"
bundle:NULL] instantiateViewControllerWithIdentifier:@"ResultsController"];
[self presentModalViewController:viewController animated:NO];
Комментарии:
1. Спасибо! И … есть ли способ установить кнопку, которая отключала бы modalViewController непосредственно на раскадровке? Не привязывая его к методу в коде, который вызывает только этот метод dismiss …?
2. Я не думаю, что это работает без кода, потому что нет подключения к каким-либо другим ViewControllers в раскадровке.
Ответ №2:
В вашей раскадровке:
- Добавьте универсальный UIViewController.
- С помощью Identity Inspector установите его пользовательский класс в качестве вашего ResultsController.
- Создайте модальный переход от вашего исходного контроллера представления к ResultsController
Ответ №3:
Для Swift 4
let viewController = UIStoryboard.init(name: "MainStoryboard", bundle: nil).instantiateViewController(withIdentifier: "ResultsController")
self.present(viewController, animated: true, completion: nil)