Приложение Xcode 4 — панель вкладок — проблема при выполнении третьей вкладки

#ipad #xcode4 #uitabbar #ios4

#iPad #xcode4 #uitabbar #ios4

Вопрос:

У меня есть Xcode 4, и я создал приложение, используя шаблон панели вкладок (а не приложение на основе просмотра). На каждой из этих вкладок есть пользовательский переключатель, и когда я его меняю, 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:]: этот класс не кодирует значение ключа -жалоба на key switch3».

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

Ответ №1:

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

Комментарии:

1. Все, что я могу сказать, это «черт» самому себе и «Вау, спасибо» вам, сэр. Ты лучший!