2013-09-26 3 views
8

У меня есть контроллер просмотра Я помещен в основную раскадровку, но когда я пытаюсь инициализировать и загружать контроллер, мое приложение падает. Версия xcode, которую я использую, на самом деле не говорит мне об ошибках, которые я получаю должным образом, но я видел, что это давало мне сигнал сигабра. Я не знаю, почему он не работает.Пытается инициализировать контроллер вида из раскадровки

UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"MainStoryboard_iPhone" bundle:nil]; 
    UIViewController *vc = [storyboard instantiateViewControllerWithIdentifier:@"SelectDateViewController"]; 
    [vc setModalPresentationStyle:UIModalPresentationFullScreen]; 

    [self presentModalViewController:vc animated:YES]; 

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

+0

Когда вы создали приложение, вы включите раскадровки для начала? – erdekhayser

+0

@foriinrangeawesome Да, да, я сделал. –

ответ

0

[self presentModalViewController:vc animated:YES]; устарел.

Try: [self presentViewController:vc animated:YES completion:nil];

+0

Это вполне может быть причиной. Интересно, почему это не дает ему предупреждения. – erdekhayser

6

Установить точку останова в последней строке, чтобы проверить (VC, а также раскадровка) не равны нулю.

presentModalViewController выйдет из строя, если его аргумент viewController равен нулю.

Если оба значения равны нулю, ваше имя раскадровки, скорее всего, неверно (менее вероятно).

Если только vc равно нулю, идентификатор является неправильным (либо в коде, либо в раскадровке). Убедитесь, что идентификатор раскадровки VC (как показано на скриншоте) соответствует вашему описанию. Обычно принято не выбирать имя класса для этого (так как у вас может быть несколько экземпляров данного класса в ваших раскадках).

Искатель раскадровки чувствителен к регистру и должен быть уникальным. Я считаю, что верный способ установить его - введите имя в этом поле после выбора контроллера вида и нажав кнопку «вернуться к концу» (не просто нажмите на поле). Я заметил, что некоторые коррупции происходят в раскадровки при конвертации из Xcode 4 в 5 и наоборот, поэтому помощь в plist/xml также может помочь.

Storyboard ID

Edit: также сроки, когда это называется важно, см presentModalViewController not working. Убедитесь, что контроллер представления, получающий сообщение, уже был показан (т. Е. Вызван в viewDidAppear, а не в viewDidLoad).

Как отметил Абдулла, вы должны, вероятно, отъезжать устаревший метод к:

[self presentViewController:vc animated:YES completion:nil]; 

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

0

Вы установили начальный ViewController из раскадровки? Если да, убедитесь, что ваш идентификатор раскадровки тот же. Если вы используете раскадровку вы можете непосредственно присутствовать или не увольнять ViewController нет необходимости, чтобы написать код для него

надеюсь, что это поможет вам :)

Смежные вопросы