Загруженный наконечник, но выход «view» не установлен - PullRequest
695 голосов
/ 21 января 2011

Я добавил новый файл пера в свой проект и попытался загрузить его.

Однако, когда я нажимаю на значок панели инструментов, который должен привести меня к созданному мной представлению, я получаюNSInternalInconsistencyException с сообщением:

Завершение приложения из-за необработанного исключения 'NSInternalInconsistencyException', причина: '- [UIViewController _loadViewFromNibNamed: bundle:] загрузил перо "...", но вывод представления былне задано. '

Итак, я открыл свой nib-файл и вижу, что не установлены ссылки на розетки.Тем не менее, я пытаюсь щелкнуть и перетащить круг для «новой ссылки на источник» в Владелец файла, но это не позволит мне ... что мне нужно сделать, чтобы мой вид отображался?

Ответы [ 27 ]

1717 голосов
/ 18 июня 2011

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

  • Откройте файл XIB, вызывающий проблемы
  • Нажмите на значок владельца файла на левой панели (верхняя часть выглядит как желтое поле с контуром)
  • Если вы не видите правую боковую панель, нажмите на третий значок над «видом» на панели инструментов.Это покажет правую боковую панель
  • В правой боковой панели, нажмите на третью вкладку - ту, которая немного похожа на газету
  • Под "Custom Class" вВверху убедитесь, что Class - это имя ViewController, которое должно соответствовать этому представлению.Если нет, введите его

Custom class configuration

  • В правой боковой панели нажмите на последнюю вкладку - ту, которая выглядит как круг со стрелкойв нем
  • Вы должны увидеть «розетки» с «видом» под ним.Перетащите кружок рядом с ним на значок «вид» на левой панели (нижний, похожий на белый квадрат с толстым серым контуром

Custom class configuration

  • Сохраните xib и повторите попытку
167 голосов
/ 05 июня 2015

Это предложение Джоша Джастиса, но в графической форме (фотографии мои):

  1. Выбрать владельца файла
  2. В правой части панели выбрать пользовательский класс.
  3. Введите имя пользовательского класса

enter image description here

На правой боковой панели выберите выходные данные Перетащите выходное представление вида для просмотра компонента

enter image description here

Наконец, экземпляр View Controller создается с помощью скользящего кода:

        PTFilterUserVC *aFilterUserVC = [[PTFilterUserVC alloc] initWithNibName:@"FilterVC" bundle:nil];

        //OPTIONAL.This is how 'I' am interested in present the view controller.
        [self.navigationController pushViewController:aFilterUserVC animated:YES];
68 голосов
/ 25 октября 2012

Обычно я могу это исправить, переделав соединение между владельцем файла и представлением.Удерживая клавишу «Control», перетащите его от владельца файла к своему представлению (в IB) и выберите представление во всплывающем меню.

59 голосов
/ 26 января 2011

Идентификация просмотра - Идентификация класса не установлена. После установки соответствующего класса проблема была решена.

27 голосов
/ 21 августа 2013

Вы уверены, что у вас есть UIView (или подкласс), назначенный свойству "view" вашегоViewViewController?

Щелкните правой кнопкой мыши «Владелец файла» в левой панели XIB для вашего ViewController и убедитесь, что выход «view» установлен.Если нет, установите его для просмотра!

это определенно решит проблему

14 голосов
/ 05 июля 2013

У меня была такая же проблема с XCode 4.6.3. Я начал с пары файлов с именами MySettingsView.h и .m, но удалил их в пользу MySettingsViewController.h, но, несмотря на попытку большинства подсказок, упомянутых здесь, он все еще продолжал выдавать ошибку с

2013-07-05 11: 48: 17.205 MyApp [39024: c07] *** Завершение работы приложения из-за необработанного исключения «NSInternalInconsistencyException», причина: '- [UIViewController _loadViewFromNibNamed: bundle:] загрузил «MySettingsView», но выходное окно просмотра не было установлено. '

Очевидно, что он все еще был «сбит с толку», пытаясь загрузить MySettingsView.xib вместо MySettingsView Controller .xib. Может быть, логика «делай, что я имею в виду» слишком причудлива.

Поэтому я обошел проблему, жестко закодировав имя NIB / XIB в MySettingsViewController.m:

- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
    self = [super initWithNibName:@"MySettingsViewController" bundle:nibBundleOrNil];
}
13 голосов
/ 13 марта 2014

Для меня все вещи, изложенные здесь https://stackoverflow.com/a/6395750/939501, были правдой, но все равно это была ошибка, причина была в том, что я создал класс View с именем ABCView, а затем удалил его позже, я добавил контроллер представления в виде ABCViewController, так что как-то имел в виду старый ABCView в новом контроллере представления, мне пришлось удалить ABCViewController и добавить новый с другим именем, что решило мою проблему.

Спасибо

6 голосов
/ 31 августа 2011

Моя проблема с этим была вызвана наличием дублирующего пера в папке класса, для которого не было установлено представление. Казалось, xcode выбирает один кончик для сборки, а затем другой, когда я собирал проект в следующий раз. Просто удалил другой. Выглядит хорошо. Doh!

5 голосов
/ 22 февраля 2018

Любой, кто использует метод xib для создания UIView и сталкивается с этой проблемой, заметит, что у вас не будет выхода «view» в меню инспектора соединений. Но если вы установите для пользовательского класса «Владельцы файла» значение UIViewController, а затем вы увидите выход «view», который вы можете просто использовать CMND для подключения выхода к CustomView.

4 голосов
/ 21 июня 2012

Я только что исправил это в своем. Большой проект, два файла. Один из них был «ReallyLargeNameView», а другой - «ReallyLargeNameViewController»

Основываясь на втором выбранном выше ответе, я решил очистить свою сборку. Нада, но я все еще подозревал XCode (поскольку у меня есть два идентичных класса, я должен их абстрагировать, но ...) Так что кто-то работает, кто-то нет. Имена владельцев файлов до сих пор копируются и вставляются, розетки переподключаются, xCode перезагружается, все еще ничего.

Поэтому я удаляю подобный именованный класс (который является представлением). Вскоре новая ошибка «розетка внутри не подключена» буквально была «webView, а не значение ключа», бла… в основном, говоря «Visual Studio лучше». Во всяком случае ... Я стираю меньший именованный файл, и БАМ, он работает.

XCode смущает файлы с одинаковыми именами. И проект достаточно большой, чтобы его можно было немного перезагрузить, что может быть его частью.

Хотелось бы, чтобы у меня был более технический ответ, чем "XCode в замешательстве", но хорошо, xCode сильно запутался на этом этапе. Не путать это так же, как я помогу маленькому ребенку. Это работает сейчас, :) Должно принести пользу другим, если вышесказанное ничего не исправит.

Всегда не забывайте чистить свои сборки (также удаляя симулятор)

...