Подтвердить что ты не робот

IOS 5, программатически определяет путь

У меня возникли проблемы с достижением следующего использования раскадровки:

Если настройка не выполнена: запустить приложение → показать настройки контроллера просмотра → показать главный контроллер навигации Когда настройка выполнена: запустить приложение → показать главный навигационный контроллер

В основном, я хочу, чтобы приложение программно начинало с просмотра настроек в некоторых случаях и в противном случае пропустило прямо к главному навигационному контроллеру.

Мне удалось показать представление настроек с модальным стилем из основного навигационного контроллера, но я не знаю, как его отображать до отображения главного навигационного контроллера. Любые идеи?

4b9b3361

Ответ 1

Мне удалось сделать это несколько иначе:

  • Используйте UINavigationController в качестве начального контроллера представления.
  • Создайте контроллер корневого представления, который будет управлять решением загрузки.
  • Создайте серию раскадровки из контроллера корневого представления в основное представление и в представление настроек и дайте соответствующие идентификаторы segues.
  • Вызовите performSegueWithIdentifier с правильным идентификатором из вашего контроллера корневого представления.

Простое решение, надеюсь, что это поможет.

Ответ 2

По умолчанию контроллер начального представления из основной раскадровки создается и отображается автоматически при запуске приложения. Чтобы этого не произошло, вам нужно удалить параметр UIMainStoryboardFile из файла info.plist.

Без контроллера представления по умолчанию вы теперь можете свободно создавать его при запуске приложения. См. Документацию UIStoryboard. Используйте +storyboardWithName:bundle: для загрузки раскадровки, а затем используйте –instantiateViewControllerWithIdentifier: для создания правильного контроллера вида. Вам также нужно будет создать основной интерфейс UIWindow и добавить к нему представление контроллера просмотра так же, как вы использовали пользовательский интерфейс на основе .nib. Обратите внимание, что без установки UIMainStoryboardFile главное окно не создано для вас - прочитайте объяснение.

Ответ 3

Я сделал что-то похожее на amoshaviv, его совет звучит. Я сделал это немного иначе, и я расскажу немного больше. Я создал собственный класс MyInitialViewController, полученный из UIViewController, и сделал это начальным контроллером представления. В файле раскадровки я создал modal segues с соответствующими именами для всех (в моем случае трех) возможных "реальных" контроллеров первого вида. В классе MyInitialViewController я реализовал

- (void)viewDidAppear:(BOOL)animated;

чтобы сначала выполнить проверку, с которой следует переключиться, и затем сделать правильный

[self performSegueWithIdentifier:@"NameOfSegue" sender:self];

Фактически, это делает MyInitialViewController не более чем переключателем, выполняемым при его представлении. Я сначала попытался сделать это при загрузке, потому что мне не важно, действительно ли это видел, но это не сработало, в то время как viewDidAppear делает.

Чтобы сделать это визуально гладким, я попробовал следующее. В свойствах segues я отключил анимацию. Вид я оставил пустым, и я дал ему цвет фона, соответствующий цвету загрузочного образа.