Я добавил новый файл пера в свой проект и попытался загрузить его.
Однако, когда я нажимаю на значок панели инструментов, который должен привести меня к представлению, которое я создал, я получаю NSInternalInconsistencyException
сообщение:
Завершение работы приложения из-за необработанного исключения «NSInternalInconsistencyException», причина: «- [UIViewController _loadViewFromNibNamed: bundle:] загрузил перо« ... », но выход представления не был установлен».
Таким образом, я открыл свой файл пера, и я вижу для представления, что никакие установленные ссылки не установлены. Тем не менее, я пытаюсь щелкнуть и перетащить круг для «нового источника ссылок» в Владелец файла, но это не позволит мне ... что мне нужно сделать, чтобы отобразить мой вид?
Ответы:
Вы, ребята, правы, но, поскольку я новичок, мне потребовалось немного времени, чтобы выяснить все шаги, чтобы сделать это. Вот что сработало для меня:
источник
MyViewController
является подклассом подклассаUIViewController
и отсутствует вview
разделе "Розетки". Если я подклассMyViewController
прямо изUIViewController
представления, появляется Unter "Outlets". Магия или ошибка Xcode.Это предложение Джоша Джастиса, но в графической форме (фотографии мои):
Наконец, View Controller создается с использованием скользящего кода:
источник
Обычно я могу это исправить, переделав соединение между владельцем файла и представлением. Удерживая клавишу «Control», перетащите владелец файла в свой вид (в IB) и выберите вид из всплывающего меню.
источник
Идентификация представления - Идентификация класса не установлена. После установки соответствующего класса проблема была решена.
источник
Вы уверены, что у вас есть UIView (или подкласс), назначенный свойству "view" вашегоViewViewController?
Щелкните правой кнопкой мыши «Владелец файла» в левой панели XIB для вашего ViewController и убедитесь, что установлен выход «просмотр». Если нет, установите его для просмотра!
это определенно решит проблему
источник
Для меня все вещи, изложенные здесь https://stackoverflow.com/a/6395750/939501, были правдой, но все равно это было сгенерированное сообщение об ошибке, причина в том, что я создал класс View с именем ABCView, а затем удалил его позже, добавив контроллер представления как ABCViewController, так что как-то он ссылался на старый ABCView в новом контроллере представления, мне пришлось удалить ABCViewController и добавить новый с другим именем, что решило мою проблему.
Спасибо
источник
У меня была такая же проблема с XCode 4.6.3. Я начал с парой файлов с именем
MySettingsView.h
и ,.m
но они были удалены в пользуMySettingsViewController.h
, но несмотря на попытки большинства намеков упомянутых здесь, она до сих пор хранится erroring с,Очевидно, он все еще был «сбит с толку», пытаясь загрузить MySettingsView.xib вместо MySettingsView Controller .xib. Может быть, логика «делай, что я имею в виду» слишком причудлива.
Поэтому я обошел проблему, жестко закодировав имя NIB / XIB в MySettingsViewController.m:
источник
Любой, кто использует метод xib для создания UIView и сталкивается с этой проблемой, заметит, что у вас не будет выхода «view» в меню инспектора соединений. Но если вы установите для пользовательского класса «Владельцы файла» значение UIViewController, а затем вы увидите выход «view», который вы можете просто использовать CMND для подключения выхода к CustomView.
источник
Моя проблема с этим была вызвана наличием дублирующего пера в папке класса, который не имел установленного представления. Казалось, xcode выбирает один кончик для сборки, а затем другой, когда я собирал проект в следующий раз. Просто удалил другой. Выглядит хорошо. Doh!
источник
Просто потратил больше часа, пытаясь выяснить, почему мое свойство view не установлено в моем контроллере представления после его инициализации с помощью nib. Не забудьте вызвать «[super initWithNibName ...]» внутри initWithNibName контроллера представления.
источник
Я только что исправил это в своем. Большой проект, два файла. Один был «ReallyLargeNameView», а другой - «ReallyLargeNameViewController»
Основываясь на 2-м ответе, выбранном выше, я решил очистить свою сборку. Нада, но я все еще подозревал XCode (так как у меня есть два идентичных класса, я должен их абстрагировать, но ...) Так что кто-то работает, кто-то нет. Имена владельцев файлов до сих пор копируются и вставляются, розетки переподключаются, xCode перезагружается, но все равно ничего.
Поэтому я удаляю похожий именованный класс (который является представлением). Вскоре новая ошибка «розетка внутри не подключена» буквально была «webView, а не значение ключа», бла… в основном, говоря «Visual Studio лучше». Во всяком случае ... Я стираю меньший именованный файл, и БАМ, это работает.
XCode смущает файлы с одинаковыми именами. И проект достаточно большой, чтобы его можно было немного перезагрузить, что может быть его частью.
Хотелось бы, чтобы у меня был более технический ответ, чем «XCode в замешательстве», но хорошо, xCode сильно запутался на этом этапе. Не путать это так же, как я помогу маленькому ребенку. Это работает сейчас, :) Должно принести пользу другим, если вышесказанное ничего не исправит.
Всегда не забывайте чистить свои сборки (удаляя также симулятор)
источник
У меня также была та же проблема, и моя проблема заключалась в том, что я добавил другую локализацию (английский) в перо ViewControllers, чтобы мое приложение с немецким языком локализации не смогло найти перо с английской локализацией !! Надеюсь, это кому-нибудь поможет!
источник
источник
Для меня проблема была вызвана звонком
initWithNibName:bundle:
. Я использую ячейки табличного представления из файла пера, чтобы определить формы ввода, которые сидятtableViews
. Поскольку у меня нет представления, не имеет смысла подключаться к одному. Вместо этого, если яinitWithStyle:
вместо этого вызываю метод, а изнутри я загружаю nib-файл, тогда все работает как положено.источник
Предыдущие ответы почти решили проблему для меня, но последний шаг отсутствовал.
Теперь любые добавленные вами @IBOutlets будут прикреплены.
Ура, Ричард
источник
У меня была та же проблема, но требовалось немного другое решение. Проблема в этом случае заключалась в классе владельца файла, а не в классе представления. Чтобы установить это, я должен был щелкнуть значок «Воспроизведение в обратном направлении» в левом нижнем углу окна Interface Builder, и затем появились параметры, которые изолировали характеристики Владельца файла, Первого ответчика и Представления. Нажав на первый (большой прозрачный блок), я смог установить его собственный класс, как предложено выше.
источник
У меня была та же проблема, но было другое решение. Проблема в этом случае заключалась в том, что класс владельца файла не был подключен к файлу xib.
источник
Сегодня вечером я столкнулся с чем-то очень похожим с подклассом Swift UIViewController. В этом случае ни одно из вышеперечисленных исправлений не сработало, но немного переупорядочил мой код. Net-net, имеющий расширение до подкласса, происходит до того, как само определение подкласса в том же файле, похоже, сбивает с толку XCode, несмотря на хорошую компиляцию; исправление заключалось в размещении расширений после определения подкласса.
Я разместил детали в ответе на этот похожий вопрос .
источник
В моем случае назначенный инициализатор
- (instancetype)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
в классе *** ViewController был реализован, поэтому даже если я вызову другой инициализатор для инициализации объекта, будет вызван указанный инициализатор.Таким образом, чтобы решить эту проблему, проверка
- (instancetype)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
также является правильным способом.источник
Я столкнулся с этой проблемой немного иначе, чем другие ответы здесь.
Если я просто создал новый xib-файл, добавил к нему UIViewController в Интерфейсном Разработчике и установил пользовательский класс этого UIViewController в свой контроллер представления, что привело к аварийному завершению «выход розетки не установлен». В других решениях здесь говорится, что перетаскивание контрольной точки перетаскивается в представление, но для меня розетка обзора была серой, и я не мог ее перетаскивать.
Я понял, что моя ошибка была в добавлении UIViewController в Интерфейсный Разработчик. Вместо этого мне пришлось добавить UIView и установить пользовательский класс владельца файла на мой контроллер представления. Затем я мог бы перетаскивать вывод представления владельца файла в мой новый вид UIView, и все работало как надо.
источник
Просто была та же ошибка в моем проекте, но другая причина. В моем случае у меня была настройка IBOutlet с именем «View» в моем пользовательском классе UITableViewController. Я знал, что «представление» было особенным, потому что это член базового класса, но я не думал, что View (другой случай) также будет проблемой. Я предполагаю, что некоторые области какао не чувствительны к регистру, и, вероятно, загрузка xib является одной из этих областей. Поэтому я просто переименовал его в DefaultView, и теперь все хорошо.
источник
выберите владельца файла и перейдите к открытию инспектора идентификации и дайте имя класса, которому он соответствует. Если ни один из описанных выше способов не работает, но вы все еще не видите выходное окно просмотра, тогда дайте новую ссылку на выходное соединение с владельцем файла, тогда вы сможете увидеть выходное окно просмотра. Нажмите на View Outlet, чтобы установить связь между View Outlet и владельцем файла. Запустите приложение, это работает нормально.
источник
В моем случае вид не просматривался в xib. в xib представление было size = none (4-я вкладка справа). Я установил размер Freeform и перезагрузил xCode. просмотр был обжалован, и я установил правильную ссылку на просмотр.
источник
Если вы все перепробовали и все еще получаете эту ошибку, попробуйте заново создать файл класса с нуля, но не забудьте установить флажок «Также создать файл XIB». Это автоматически связывает несколько элементов, которые не связаны при создании этих файлов отдельно. После того, как это будет создано, вы, вероятно, сможете вырезать и вставить все на новый XIB, и оно должно работать нормально.
Я нахожу эту проблему специально с созданием файлов отдельно в Swift.
источник
для меня это случилось, когда
UIView из этого ViewController должен быть загружен в другое представление как подпредставление,
мы назовем что-то вроде этого
куда
Здесь loadView отсутствовал ,, добавление этой строки решило мою проблему.
источник
У меня была та же проблема, я понял, и это потому, что я пометил « Статические ячейки » в свойствах табличного представления под опцией контента . Сработало, когда оно изменилось на "
Dynamic Prototypes
". Снимок экрана ниже.источник
У меня была похожая проблема с Xcode 9.3, и установка «Модуль» в инспекторе атрибутов «Владелец файла» для модуля проекта устранила это для меня.
источник
Откройте раскадровку файл , где ваш ViewController существует, или XIB связанный файл с textEdit.app и проверьте, раскадровка или имя XIB такой же вашей ViewController, а затем изменить его, сохранить и перезагрузить / перезапустить Xcode.
источник
Если вы используете собственный метод init, убедитесь, что вы возвращаете что-то действительное. Я наткнулся на кусок кода, который упал на что-то вроде этого:
В другом классе контроллер был создан так:
Проблема в том, что в методе init self не изменилось и должно выглядеть так:
источник
Я хотел бы поддержать Стивена Дж. Иногда X Code просто запутывается. У меня просто был опыт, когда я много играл с пользовательским интерфейсом, и несколько раз добавлял и удалял розетки. Розетки просто больше не будут подключаться. Я никогда не выяснял конкретную причину (я пробовал все решения выше), и мне просто нужно было удалить NIB и воссоздать его с нуля, и на самом деле пришлось использовать другое имя для NIB, прежде чем он будет работать. (XCode 4.6.1) Потратил на это пару часов.
источник