Загруженный наконечник, но розетка "вид" не была установлена


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

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

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

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

27 648

27 ответов:

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

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

Custom class configuration

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

Custom class configuration

  • сохранить xib и повторно запустить

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

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

enter image description here

  1. на правой боковой панели выберите oultets
  2. перетащите вид розетки для просмотра компонента

enter image description here

наконец контроллер вида создается с помощью подвижной код:

        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];

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

представление Identity - Class Identity не было установлено. После установки его в соответствующий класс, проблема была решена.

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

щелкните правой кнопкой мыши на "владелец файла "в левой панели xib для вашего ViewController и убедитесь, что установлен выход" вид". Если нет, установите его на вид!

Это определенно исправит проблему

у меня была такая же проблема с 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 контроллер.xib. Может быть, его логика" делать то, что я имею в виду " слишком причудлива.

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

- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
    self = [super initWithNibName:@"MySettingsViewController" bundle:nibBundleOrNil];
}

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

спасибо

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

просто потратил больше часа, пытаясь выяснить, почему мое свойство view не установлено в моем контроллере view после его запуска из nib. Не забудьте позвонить " [super initWithNibName...] "внутри вашего контроллера вида initWithNibName.

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

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

поэтому я удаляю аналогичный именованный класс (который является представлением). Вскоре новая ошибка " розетка внутри не подключена "буквально была" webView not key value " blah... в основном говорят"Visual Studio лучше". В любом случае... Я стираю меньший именованный файл, и бац, он работает.

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

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

всегда помните, чтобы очистить ваши сборки (путем удаления с симулятора тоже)

У меня также была та же проблема, и моя проблема заключалась в том, что я добавил другую локализацию (на английском языке) в перо ViewControllers, поэтому мое приложение с локализацией на немецком языке не могло найти перо с локализацией на английском языке!! Надеюсь, это кому-нибудь поможет!

я столкнулся с той же проблемой, когда случайно удалил ссылку xib и добавил ее снова.Я просто исправил, установив соединение между владельцем файлов и представлением.Также убедитесь, что пользовательский класс вашего владельца файлов является вашим ожидаемым viewController.

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

для меня, проблема была вызвана вызова initWithNibName:bundle:. Я использую ячейки табличного представления из файла nib для определения форм ввода, которые сидят на tableViews. Поскольку у меня нет вида, нет смысла зацепиться за него. Вместо этого, если я называю initWithStyle: метод вместо этого, и оттуда, я загружаю файл nib, то все работает, как ожидалось.

У меня была та же проблема, но требовалось немного другое решение. Проблема в данном случае заключалась в классе владельца файла, а не в классе представления. Чтобы установить это, мне нужно было щелкнуть значок "назад играть" в левом нижнем углу окна Interface Builder, а затем появились параметры, которые изолировали характеристики владельца файла, первого ответчика и представления. Нажав на первый (большое прозрачное поле), я смог установить его пользовательский класс как предложено выше.

У меня была та же проблема, но требовалось другое решение. Проблема в этом случае заключалась в том, что класс владельца файла не был подключен к файлу xib.

сегодня вечером я столкнулся с чем-то очень похожим, с подклассом Swift UIViewController. В этом случае ни одно из вышеперечисленных исправлений не сработало, но переупорядочение моего кода немного сделало. Net-net, имеющий расширение подкласса, происходит до определения самого подкласса в том же файле, кажется, путают XCode, несмотря на компиляцию штрафа; исправление состояло в том, чтобы разместить расширения после определения подкласса.

Я опубликовал детали в ответ на это похоже вопрос.

в моем случае , назначенный инициализатор - (instancetype)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil в * * * ViewController класс был реализован так, даже если при вызове другого инициализатора для инициализации объекта ,назначенный инициализатор будет вызван .

поэтому, чтобы решить эту проблему, проверьте wether - (instancetype)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil тоже правильно.

просто была такая же ошибка в моем проекте, но по другой причине. В моем случае у меня была настройка IBOutlet с именем "View" в моем пользовательском классе UITableViewController. Я знал, что "view" был особенным, потому что это член базового класса, но я не думал, что View (другой случай) также будет проблемой. Я думаю, что некоторые области какао не чувствительны к регистру, и, вероятно, загрузка xib является одной из этих областей. Поэтому я просто переименовал его в DefaultView, и теперь все хорошо.

выберите владельца файлов и откройте инспектор идентификаторов, указав имя класса, которому он соответствует. Если ни один из вышеперечисленных методов не работает, и вы все еще не можете увидеть выход вида, то дайте новое подключение к розетке ссылки на владельца файла, тогда вы можете увидеть выход вида. Нажмите на вид розетки, чтобы установить соединение между видом розетки и владельцем файла. Запустите приложение, это работает нормально.

Я хотел бы второй Стивен Дж. несколько раз X код просто запутаться. У меня просто был опыт, когда я много играл с пользовательским интерфейсом, и добавлял и удалял выходы довольно много раз. Розетки просто больше не будут подключаться. Я никогда не выяснял конкретную причину (я пробовал все решения выше), и мне просто нужно было удалить перо и воссоздать его с нуля, и на самом деле пришлось использовать другое имя для пера, прежде чем он будет работать. (XCode 4.6.1) потратил впустую пару на это ушло несколько часов.

в моем случае вид не был просмотрен в xib. в xib вид был size = none (4-я вкладка справа). Я установил размер в Freeform и перезагрузил xCode. вид был обжалован, и я установил правильную ссылку для просмотра.

Если вы пробовали все, и вы все еще получаете эту ошибку, попробуйте повторно создать файл класса с нуля, но не забудьте установить флажок "также создать файл XIB". Это позволит автоматически связать несколько элементов, которые не связаны при создании этих файлов отдельно. После того, как это будет создано, вы, вероятно, можете вырезать и вставить все на новый XIB, и он должен работать нормально.

Я нахожу эту проблему специально с созданием файлов отдельно в Swift.

для меня это произошло, когда

  • у меня есть класс ViewController (. mm / h), связанный с файлом Nib,
  • UIView из этого ViewController должен быть загружен на другой вид в качестве подвида,

  • назовем что-то вроде этого

    -(void)initCheckView{
    
       CheckView *pCheckViewCtrl = [CheckView instance];
    
       pCheckView = [pCheckViewCtrl view];
    
       [[self view]addSubview:pCheckView];
    
       [pCheckViewCtrl performCheck];        
    
    }
    

здесь

+(CheckView *)instance{
    static CheckView *pCheckView = nil;
    static dispatch_once_t checkToken;

    dispatch_once(&checkToken, ^{
        pCheckView = [[CheckView alloc]initWithNibName:@"CheckView" bundle:nil];
        if ( pCheckView){
            [pCheckView initLocal];
            **[pCheckView loadView];**
        }
    });

    return pCheckView;

}

здесь loadView отсутствовал,,, добавление этой строки решило мою проблему.

У меня была та же проблема, я понял, и это из-за того, что я поставил галочку "статические ячейки" в свойствах Таблица под содержимое. Работал, когда он изменился на"Dynamic Prototypes". Скриншот ниже. enter image description here

У меня была аналогичная проблема с Xcode 9.3, и установка "модуля" под инспектором атрибутов "владельца файла" в модуль проекта исправила это для меня.

ответ на проблему для меня состоял в том, чтобы убедиться xib имя файла и swift имя файла не должно быть одинаковым. Как и при создании объекта класса он отдавал приоритет и XIB загрузка не смогла найти выход для просмотра.

пример : у меня был DataFragement.xib и DataFragment.swift

и я пытался создать объект, как

пусть fragment = DataFragment ()

чтобы решить в этом выпуске я переименовал свой xib-файл в data_fragment.xib и вуаля все работает очарование.