Проблема с построителем интерфейса: при подключении IBOutlet получение "этого класса не является ключевым значением, совместимым с кодом для ключа",

Вот что я делаю:

1) Создайте новый подкласс UIViewController, отметьте с помощью NIB для конструктора интерфейсов

2) В заголовке:

@interface QuizMainViewController : UIViewController 
{
    UILabel* aLabel;
} 

@property (nonatomic, retain) IBOutlet UILabel* aLabel;

@end

3) В .m

#import "QuizMainViewController.h"    

@implementation QuizMainViewController

@synthesize aLabel;

- (void)dealloc 
{
    [aLabel release];
    [super dealloc];
}

@end

4) Откройте конструктор интерфейса NIB In, перетащите новый UILabel в представление.

Я тестирую программу здесь, и она работает нормально.

5) щелкните правой кнопкой мыши владельца файла, подключите 'aLabel' из Outlets к UILabel.

Я бегу сюда, и он падает. Сообщение из журнала:

*** Завершение приложения из-за неперехваченного исключения "NSUnknownKeyException", причина: "[setValue: forUndefinedKey:]: этот класс не является ключевым значением, совместимым с кодировкой для ключа aLabel. '

3
05 мая '10 в 14:36
источник поделиться
2 ответов

Я исправил проблему!

Вид загружался из контроллера панели вкладок, я установил имя nib как "QuizMainViewController", но я не установил идентификатор класса в качестве "QuizMainViewController", который был застрял со значением по умолчанию "UIViewController".

Когда представление было загружено, он думал, что это экземпляр UIViewController, поэтому он не знал о свойстве aLabel.

MORAL OF THE STORY: при использовании контроллера панели вкладок задайте имя ниба и идентификатор класса для ножей, у которых есть свой собственный контроллер представления.

1
06 мая '10 в 11:27
источник

Try:

@interface QuizMainViewController : UIViewController 
{
    IBOutlet UILabel* aLabel;
} 

Предположительно, вам больше не нужно делать это в Objective-C 2.0, но я столкнулся с проблемами на iPhone, оставив это.

Изменить:

Вы можете попробовать изменить

@property (nonatomic, retain) IBOutlet UILabel* aLabel;

к

@property (nonatomic, retain) IBOutlet UILabel *aLabel;

Не думайте, что это важно. Компилятор обычно может решить эту проблему.

Edit01:

В IB убедитесь, что для класса контроллера вида установлено значение QuizManViewController, а не только UIView.

0
05 мая '10 в 16:42
источник

Посмотрите другие вопросы по меткам или Задайте вопрос