Xcode 4 - приложение панели вкладок - проблема при выполнении третьей вкладки - PullRequest
0 голосов
/ 26 апреля 2011

У меня Xcode 4, и я создал приложение, используя шаблон панели вкладок (а не приложение, основанное на просмотре).На каждой из этих вкладок есть UISwitch , и когда я меняю его, UILabel переключается между ON и OFF .Очень простое приложение и нет путаницы.Xcode 4 создает две вкладки для меня по умолчанию.Мне также нужна третья вкладка, поэтому я перетаскиваю TabBarItem из библиотеки объектов и помещаю ее в существующий TabBarController. Я создаю новый файл, подкласс UIViewController и следующий код переходит в три вкладки.

Ниже приведен интерфейс

#import <UIKit/UIKit.h>
@interface FirstViewController : UIViewController {
    UISwitch *switch1;
    UILabel *status1;
}

@property (nonatomic,retain) IBOutlet UISwitch *switch1;
@property (nonatomic,retain) IBOutlet UILabel *status1;
- (IBAction) switch1Change;
@end

Ниже приведена реализация

#import "FirstViewController.h"
@implementation FirstViewController
@synthesize switch1;
@synthesize status1;
- (IBAction) switch1Change
{
    if (switch1.on) 
        status1.text = @"ON";
    else
        status1.text = @"OFF";
}

Тот же код повторяется для SecondViewControllerи ThirdViewController с ivars, изменяющимся на switch2, status2 и switch3, status3.Ссылка на проект: здесь

Когда я запускаю его на симуляторе, все отлично работает для первой и второй вкладок.Когда я открываю третью вкладку, я получаю следующую ошибку «Завершение приложения из-за необработанного исключения« NSUnknownKeyException », причина: [setValue: forUndefinedKey:]: этот класс не является ключом значения coding-complaint для ключа switch3».

Когда я удаляю переключатель UIS из ThirdView.xib , я не получаю эту ошибку.Только когда я добавляю управление переключателем, я получаю эту ошибку.Может кто-нибудь объяснить, что происходит?

1 Ответ

1 голос
/ 26 апреля 2011

В Интерфейсном Разработчике ваш третий контроллер представления имеет класс UIViewController (и не имеет выходов для status3 или switch3). Измените его класс на ThirdViewController, подключите розетки, и он должен работать.

...