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

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

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

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

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

Ответы [ 27 ]

0 голосов
/ 24 августа 2015

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

  • У меня есть класс 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 отсутствует, добавление этой строки решило мою проблему.

0 голосов
/ 10 февраля 2015

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

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

0 голосов
/ 16 мая 2018

У меня была похожая проблема с Xcode 9.3, и установка «Модуль» в инспекторе атрибутов «Владелец файла» для модуля проекта устранила это для меня.

0 голосов
/ 26 ноября 2012

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

0 голосов
/ 30 октября 2012

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

0 голосов
/ 23 апреля 2019

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

  1. Создайте файл xib и swift с тем же именем.

Add View and Swift File

  1. Установите владельца файла в качестве подкласса UIView.

enter image description here

  1. Перетащите выход из представления в подкласс UIView, назовите его «contentView»

add the contentview

  1. Добавьте этот пользовательский инициализатор, чтобы при загрузке XIB он прикреплял contentView

add the contentview as a subview

required init?(coder aDecoder: NSCoder) {
        super.init(coder: aDecoder)
        Bundle(for: self.classForCoder).loadNibNamed("SampleView", owner: self, options: nil)
        addSubview(contentView)
        contentView.frame = self.bounds
        contentView.autoresizingMask = [.flexibleHeight, .flexibleWidth]
    }

Теперь все добавленные вами @IBOutlets будут прикреплены.

Ура, Ричард

0 голосов
/ 08 апреля 2013

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

...