0

正如标题所说,我在 xcode 中创建了一个新的空项目,它只给了我 AppDelegate 头文件和编译文件。然后我向它添加了一个视图控制器,然后将主界面更改为 viewcontroller xib 文件的名称。我继续运行该项目,没有添加任何其他内容。我以前做过这个,它已经运行了,但这次不是。

错误信息是

'NSUnknownKeyException', reason: 'setValue:forUndefinedKey:]: this class is not key value coding-compliant for the key view.'

除了上面解释的内容之外,我没有编写任何代码或更改任何内容。AppDelegate 中的唯一代码如下:

。H

#import <UIKit/UIKit.h>
#import "PopOverViewController.h"
@interface AppDelegate : UIResponder <UIApplicationDelegate>
@property (strong, nonatomic) UIWindow *window;
@end

.m

#import "AppDelegate.h"
@implementation AppDelegate
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
    self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
    // Override point for customization after application launch.   
    [self.window makeKeyAndVisible];
    return YES;
}
@end

视图控制器.h

#import <UIKit/UIKit.h>
@interface PopOverViewController : UIViewController
@end

视图控制器.m

#import "PopOverViewController.h"

@interface PopOverViewController ()

@end

@implementation PopOverViewController

- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
    self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
    if (self) {
        // Custom initialization
    }
    return self;
}
- (void)viewDidLoad
{
    [super viewDidLoad];
    // Do any additional setup after loading the view from its nib.
}

我已经搜索过这个网站,但找不到类似的东西。每篇文章都是关于检查 IBOutlets 和 IBActions 和连接,但我没有做任何事情。我所做的只是对 FileOwner 的视图,仅此而已。

抱歉,如果这是重新发布/重复。如果您发现有用的页面,请告诉我。

编辑:另请注意,我确实尝试添加 rootViewController(如下 Rob 所示),但我仍然收到相同的错误消息。

4

2 回答 2

1

使用 NIB 时,您的应用程序委托通常看起来像:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
    self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
    self.viewController = [[PopOverViewController alloc] initWithNibName:@"PopOverViewController" bundle:nil];
    self.window.rootViewController = self.viewController;
    [self.window makeKeyAndVisible];
    return YES;
}

如果您使用“单一视图”应用程序模板而不是“空应用程序”模板创建应用程序,您将拥有一个具有适当代码的应用程序委托。

您通常不必为您的 XIB 提供“主界面”字段,除非您的窗口也有一个 XIB(不要与您的视图控制器的视图的 XIB 混淆)。但是基于 XIB 的应用程序通常使用上述内容,didFinishLaunchingWithOptions这消除了“主界面”为窗口指定 XIB 的需要。

于 2013-09-12T21:50:53.017 回答
0

'NSUnknownKeyException',原因:'setValue:forUndefinedKey:]:此类与键视图的键值编码不兼容。

当您将名称更改为 .h .m 文件并且不更新 .xib 文件时,通常会出现此问题。

如果与无效的 IBOutlet 有任何连接,请检查 .xib 文件(右键单击 File's Owner 并在出现的黑框中查找警报)。

于 2013-09-12T23:26:08.600 回答