使用IBOutlet添加UIViewController子类

时间:2011-05-24 05:19:38

标签: iphone

之前我在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.'

我不记得在这些步骤中我缺少什么。任何帮助,将不胜感激。感谢。

5 个答案:

答案 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

中编写ni​​b名称和类名....