#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. Все, что я могу сказать, это «черт» самому себе и «Вау, спасибо» вам, сэр. Ты лучший!