之前我在Apple的网站上看过这个例子,但出于某种原因,我找不到它并且正在大脑中。我创建了一个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.'
我不记得在这些步骤中我缺少什么。任何帮助,将不胜感激。感谢。
答案 0 :(得分:2)
@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;
如果它有帮助,请检查。
答案 1 :(得分:0)
对于您的窗口,您需要设置rootViewController。顺便说一句,你的命名“rootController”有点误导,b / c UIWindow有一个属性rootViewController。
因此,为了让这一点工作而不是行[self.window addSubview:rootController.view];
,您应该执行此操作self.window.rootViewController = self.rootController;
如果您想将代码与工作代码进行比较,只需从模板创建新项目即可。选择基于视图的应用程序,它具有您要查找的架构。
答案 2 :(得分:0)
打开TestViewController.xib并检查是否有任何虚假出口连接。选择FilesOwner并转到连接检查器。虚假出口将显示为褪色..在这种情况下,它将是标签
答案 3 :(得分:0)
在Interface Builder中检查您的插座,您有一个名为“label”的东西不存在。删除对此的引用,你应该好好去。
答案 4 :(得分:-1)
再次结帐....
使用连接检查器并在主View Controller.Xib
中编写nib名称和类名....