NSException бросил загрузку файла XIB с UITextView - PullRequest
0 голосов
/ 26 июня 2009

У меня есть файл XIB с UITextView, который я связываю с выходом UITextView * в моем контроллере:

@interface MyController : UIViewController <UITextViewDelegate> {
    IBOutlet UITextView *textView;
}

@property (nonatomic, retain)  IBOutlet UITextView *textView;

Я в отчаянии отредактировал прототип, я не реализовал ни один из методов делегата.

Мое представление загружается из панели вкладок, определенной в моем основном XIB-файле. Когда я нажимаю на соответствующую кнопку панели вкладок, немедленно генерируется исключение (до вызова каких-либо методов контроллера). Вершина стека вызовов выглядит следующим образом (из отладчика):

#0  0x93829bc6 in -[NSException raise]
#1  0x9157f8f8 in _NSSetUsingKeyValueSetter
#2  0x9157f35e in -[NSObject(NSKeyValueCoding) setValue:forKey:]
#3  0x91603f81 in -[NSObject(NSKeyValueCoding) setValue:forKeyPath:]
#4  0x30c1fadb in -[UIRuntimeOutletConnection connect]
#5  0x9381ebe5 in -[NSArray makeObjectsPerformSelector:]
#6  0x30c1e629 in -[UINib instantiateWithOptions:owner:loadingResourcesFromBundle:]
#7  0x30c2068c in -[NSBundle(NSBundleAdditions) loadNibNamed:owner:options:]
#8  0x30ac6f26 in -[UIViewController _loadViewFromNibNamed:bundle:]

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

Существуют ли какие-либо особые соображения относительно элементов UITextView при создании в IB? Я подключил его к IBOutlet в своем коде, и делегату присвоено значение «Владелец файлов» (я также пробовал его без делегата).

Ответы [ 2 ]

1 голос
/ 26 июня 2009

В представлении вкладок вы установили класс-владелец MyController для вкладки, на которой вы установили XIB? Если вы этого не сделаете, вы получите такую ​​ошибку установки селектора. Слегка выдернул мои волосы.

0 голосов
/ 26 июня 2009

Зайдите в Interface Builder и выберите свой экземпляр MyController. Нажмите вторую вкладку на информационной панели, чтобы показать все соединения, прикрепленные к объекту. Он должен показать существующую розетку «tableView» и несколько других. Если он неактивен - это означает, что определение интерфейса Interface Builder неверно и розетка неверна. Если это так (как я думаю, будет?), Просто разорвите это соединение, нажав X, и создайте его снова. Это случалось пару раз, когда я обновлял названия торговых точек и действий в XCode.

Я бы также попытался оставить делегат незаданным, чтобы убедиться, что это не проблема. Я не думаю, что это должно иметь значение.

Удачи!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...