Как мне обойти это новое предупреждение в Xcode 4.3.1: сцена недоступна из-за отсутствия точек входа?

У меня есть проект iOS с раскадровкой. Недавно я обновился до Xcode 4.3.1, и теперь появляется это новое предупреждение:

«Сцена недоступна из-за отсутствия точек входа и не имеет идентификатора для доступа во время выполнения через -instantiateViewControllerWithIdentifier :.»

Проблема в том, что у меня есть несколько контроллеров навигации в раскадровке без точек входа в них. Причина, по которой они у меня есть, заключается в том, что я могу встраивать в них другие представления, чтобы видеть панель навигации во время разработки в Xcode. Фактический контроллер навигации, на который эти представления вставляются во время выполнения, не находится в раскадровке (старый код, который еще не был перенесен в раскадровку).

Кто-нибудь нашел для этого хороший обходной путь? Я хочу, чтобы мой код был чистым без предупреждений.


person brians    schedule 17.03.2012    source источник
comment
Если вы хотите просто видеть, как выглядит панель навигации с вашим пользовательским интерфейсом, вы можете установить Simulated Top Bar на Navigation Bar на вашей сцене. Это приведет к отображению панели навигации в сцене (и даже будет автоматически распространяться вниз по любым переходам).   -  person retainCount    schedule 23.03.2012


Ответы (7)


Вы можете просто установить идентификатор. В Xcode> 5 в инспекторе удостоверений на правой панели вы найдете поле под названием «ID раскадровки». Поместите туда любую строку, и Xcode снова будет счастлив.

Он просто хочет знать, что вы можете связаться с ним (через этот идентификатор), если захотите.

person danh    schedule 17.03.2012
comment
где находится раздел "Идентификатор"? я не могу найти это - person nfoggia; 18.07.2012
comment
Выберите контроллер представления, затем крайнюю левую панель «Утилиты». В нем есть несколько вкладок, четвертая слева - Атрибуты. На этой вкладке есть разделы Simulated Metrics и View Controller. Идентификатор находится в разделе View Controller. - person danh; 18.07.2012
comment
@danh Я не могу найти идентификатор в разделе View Controller. (Моя версия Xcode - 4.6) - person hs3180; 25.03.2013
comment
Его идентификатор раскадровки в 4.6. - person danh; 25.03.2013
comment
В Xcode 5.1 он находится на вкладке «Инспектор идентичности» вместо «Атрибуты», а его имя - «Идентификатор раскадровки». - person Engin Yapici; 23.03.2014
comment
Черт так просто, но так эффективно, кому не может не понравиться этот ответ, мне чудеса - person Marin; 30.04.2014
comment
Я ожидал, что это сработает, но в моем случае предупреждение не исчезло. У меня есть несколько контроллеров навигации, которые не являются исходным контроллером представления, но я добавил их, чтобы последующие vc выводили панель навигации без необходимости добавлять ее вручную. РЕДАКТИРОВАТЬ: возможно, помогли очистка производных данных и перезапуск Xcode. - person shim; 15.11.2017

В более новых версиях Xcode: просто установите заголовок в Title в инспекторе атрибутов, а затем установите идентификатор в Storyboard ID в инспекторе идентичности вашего контроллера.

person Community    schedule 20.10.2012

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

Попробуйте перетащить проблемный вид, чтобы увидеть, есть ли что-нибудь под ним.

person Josh Benjamin    schedule 09.01.2013
comment
Понятия не имею, почему это 0 баллов, это и была моя проблема! Я пытался скопировать / вставить контроллер представления, и я думал, что он этого не делает, а просто помещал его точно поверх старого. Спасибо! - person mgrandi; 09.02.2013
comment
Боже, почему? ..) Я его дважды клонировал! Спасибо за подсказку - person heximal; 29.05.2013
comment
Сделал и эту ошибку. Я запомню это! - person cheznead; 29.06.2015

Вы можете нажать на контроллер навигации и в инспекторе атрибутов нажать кнопку «это начальный контроллер представления», это тоже должно работать.

person Terrel Gibson    schedule 18.07.2012

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

person Ronaldoh1    schedule 12.01.2015

Вам необходимо установить идентификатор для каждого ViewController (включая контроллер навигации) в поле «ID раскадровки» на панели «Identity Inspector».

На панели «Attribute Inspector» прокрутите вниз до раздела «View Controller», и если флажок «is Initial View Controller» не установлен, отметьте это.

Теперь запустите приложение.

person Himanshu Mahajan    schedule 19.04.2015

Заголовок: Настройка «Исходный контроллер представления» (с использованием Xcode 6.1)

Фон: сбой сборки: «Сцена недоступна из-за отсутствия точек входа и не имеет идентификатора для доступа во время выполнения через -instantiateViewControllerWithIdentifier :.»

Только что установил Xcode и впервые пользователь, поэтому заранее извиняюсь, если в пояснениях отсутствует соответствующая терминология.

Решение: в моем случае флажок «is Initial View Controller» не был установлен.

Свойство "is Initial View Controller" можно найти на крайней правой панели окна Xcode по умолчанию или в -> View -> Utilities -> Show Attribute Inspector.

Если вы не видите никаких свойств, установленных в «Инспекторе атрибутов», выберите «Контроллер представления» в области раскадровки. Маленькая круглая пуговица с квадратом посередине (или первая пуговица слева)

Когда вы выбираете «View Controller», вы должны увидеть, что поле «Attribute Inspector» теперь заполнено различными настройками свойств.

На панели «Attribute Inspector» прокрутите вниз до раздела «View Controller», и если флажок «is Initial View Controller» не установлен, отметьте это.

Теперь запустите проект. Надеюсь, это поможет и сработает.

person EastCoastLife    schedule 29.10.2014