iOS5 - ручной выбор раскадровки в коде - PullRequest
4 голосов
/ 17 ноября 2011

Я новичок в iOS и впервые использую раскадровки. Когда мое приложение запускается, оно проверяет серверное приложение, которое я написал, чтобы проверить, аутентифицированы ли сохраненные учетные данные, и затем я в своем классе AppDelegate пытаюсь показать соответствующую сцену в раскадровке приложения - MainMenu, если аутентифицирован, или экран входа в систему. если не аутентифицирован.

Я попытался использовать instantiateViewControllerWithIdentifier на раскадровке, а также executeSegueWithIdentifier на исходном NavigationController, который установлен как «Initial View Controller» для отображения соответствующего представления.

Однако при обоих методах отображается только пустая панель навигации, и я не уверен, куда идти.

Если бы был пример кода о том, как другие вручную манипулируют сценами раскадровки и контроллерами представления, это было бы замечательно. Может быть, я помещаю код в неправильное место (т.е. он должен войти в первый View Controller) или это не имеет значения? Никаких исключений не возникает, и я, кажется, имею доступ к экземплярам объектов по мере необходимости.

Мне кажется, мне нужно больше понять, как работает окно делегата приложения, или, может быть, мне следует сосредоточиться на ручной загрузке раскадровки, удалив его ссылку из настроек InfoPlist?

Любые мысли будут с благодарностью.

1 Ответ

2 голосов
/ 23 ноября 2011

Из моего (по общему признанию случайного) понимания раскадровок (на данный момент) у вас должно быть два именованных сегмента, идущих от первого контроллера представления, и затем вы можете просто запускать один или другой по мере необходимости (я полагаю, что-то вроде Экран «загрузка / аутентификация», хотя и краткий?)

if (success) {
    [self performSegueWithIdentifier: @"MainMenuSegue" sender: self];   
} else {
    [self performSegueWithIdentifier: @"LoginSegue" sender: self];  
}

Для отладки я бы установил кнопки на начальном контроллере вида, просто чтобы убедиться, что ссылки segue / и т. Д. Верны.

Вам действительно не нужно создавать экземплярViewControllerWithIdentifier, если вы не работаете с ограничениями segue / storyboard. Я думаю .

Я поместил executeSegueWithIdentifier в viewDidAppear первого viewcontroller моего приложения (я думаю, что это не лучшая идея; но вроде бы это произойдет как можно скорее? не из appdelegate, но я не проверял это).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...