#iphone
#iPhone
Вопрос:
Я уже видел этот пример на веб-сайте Apple раньше, но по какой-то причине я не могу его найти и занимаюсь brainfarting. Я создал файл TestViewController.h и .m, который является подклассом из UIViewController и имеет .xib. В TestAppDelegate.h у меня есть:
@interface TestAppDelegate : NSObject <UIApplicationDelegate> {
TestViewController *rootController;
}
@property (nonatomic, retain) IBOutlet UIWindow *window;
@property (nonatomic, retain) IBOutlet TestViewController *rootController;
в TestAppDelegate.m у меня есть:
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
// Override point for customization after application launch.
[self.window addSubview:rootController.view];
[self.window makeKeyAndVisible];
return YES;
}
Затем в моем MainWindow.xib я перетаскиваю ViewController, меняю класс на TestViewController, управляю перетаскиванием выхода из TestAppDelegate в TestViewController. Он создается нормально, но когда я запускаю его, я получаю:
*** Terminating app due to uncaught exception 'NSUnknownKeyException', reason: '[<TestViewController 0x4d06570> setValue:forUndefinedKey:]: this class is not key value coding-compliant for the key label.'
Я не могу вспомнить, чего мне не хватает в этих шагах. Будем признательны за любую помощь. Спасибо.
Комментарии:
1. Проверьте класс еще раз в указателе, чтобы увидеть, является ли класс TestViewController в инспекторе атрибутов..
Ответ №1:
@interface TestAppDelegate : NSObject <UIApplicationDelegate> {
TestViewController *rootController;
}
@property (nonatomic, retain) IBOutlet UIWindow *window;
@property (nonatomic, retain) IBOutlet TestViewController *rootController;
в TestAppDelegate.m у меня есть:
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions: (NSDictionary *)launchOptions
{
// Override point for customization after application launch.
[self.window addSubview:rootController.view];
[self.window makeKeyAndVisible];
return YES;
}
ЕСЛИ ЭТО ТОТ КОД, КОТОРЫЙ вы ДЕЙСТВИТЕЛЬНО ИСПОЛЬЗУЕТЕ, ДОБАВЬТЕ СЛЕДУЮЩУЮ СТРОКУ В СВОЙ ИНТЕРФЕЙС:
UIWindow *window;
И ПРОВЕРЬТЕ, ПОМОГАЕТ ЛИ ЭТО.
Ответ №2:
Для вашего окна вам необходимо настроить RootViewController. Кстати, ваше название «RootController» вводит в заблуждение, b / c UIWindow имеет свойство RootViewController. Итак, чтобы заставить это работать вместо строки [self.window addSubview:rootController.view];
, вы должны сделать это self.window.rootViewController = self.rootController;
Если вы хотите сравнить свой код с рабочим кодом, просто создайте новый проект из шаблона. Выберите приложение на основе представления, в нем есть схема, которую вы ищете.
Ответ №3:
Откройте TestViewController.xib и проверьте, подключены ли там какие-либо ложные выходы. Выберите владельца файла и перейдите в инспектор подключений. Ложные выходы будут отображаться блеклыми.. В этом случае это будет label
Ответ №4:
Проверьте свои выходы в Interface Builder, у вас есть что-то с именем «label», которое не существует. Удалите ссылку на это, и все будет готово.
Ответ №5:
снова проверка….
используйте инспектор соединений и напишите имя и класс кончика name….in контроллер основного вида.Xib