我在 Xcode 4.3.2 中工作。
我正在尝试以编程方式加载 Nib,而不是使用 Storyboard。Storyboards 似乎要简单得多,但不幸的是它们与 iOS 4 不兼容,我正在构建一个需要向后兼容的应用程序。
这是我的问题:我正在尝试加载主视图 - 一个带有绿色背景的简单视图。目前没有默认视图。
我的文件是:
AppDelegate.h/.m GreenViewController.h/.m SwitchViewController.h/.m
我想在应用程序开始时加载绿屏,所以在 AppDelegate.m 我有:
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
// Override point for customization after application launch.
self.switchViewController = [[SwitchViewController alloc] initWithNibName:@"GreenView" bundle:nil];
//UIView *switchView = self.switchViewController.view;
self.window.backgroundColor = [UIColor whiteColor];
[self.window makeKeyAndVisible];
return YES;
}
在 SwitchViewController.m 我有:
- (void)viewDidLoad
{
self.greenViewController = [[GreenViewController alloc] initWithNibName:@"GreenView" bundle:nil];
[self.view insertSubview:self.greenViewController.view atIndex:0];
[super viewDidLoad];
}
用简单的 initWithNibName 填充默认代码。
在 GreenViewController.m 我有:
- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
if (self) {
// Custom initialization
}
return self;
}
这是一切的主要功能。当我运行该应用程序时,我立即收到错误消息:
2012-10-09 12:34:35.586 MyViewSwitcher[5210:f803] -[AppDelegate setSwitchViewController:]: unrecognized selector sent to instance 0x6c6c310
2012-10-09 12:34:35.587 MyViewSwitcher[5210:f803] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[AppDelegate setSwitchViewController:]: unrecognized selector sent to instance 0x6c6c310'
有人可以帮我理解我的错误的原因吗?我确保 GreenView.xib 的“自定义类”是身份检查器中的“GreenViewController”。此外,我确保“视图”的引用出口是文件的所有者。我想在我的应用启动时加载 GreenView 笔尖。最终,我将通过添加一个按钮来切换视图,但到目前为止我什至无法加载主视图。我不确定我在误解什么。
提前感谢您的帮助!