升级到xCode 4.2后,我收到以下警告......
应用程序在应用程序启动结束时应该有一个根视图控制器
我在线阅读关于RootViewController的内容后,我不确定我是否已正确创建了我的根视图控制器。很久以前,当我第一次学习xCode编程时,我创建了它。
我有一个问题是可以将根视图控制器命名为RootViewController以外的东西。我现在看到的每个例子都将它命名为RootViewController。我也看到它在app委托中合成这样......
@synthesize rootViewController = _rootViewController;
我不明白这是做什么的。为什么不呢......
@synthesize rootViewController;
无论如何,我将根视图控制器的名称更改为RootViewController,并按照我在cupsofcocoa.com找到的示例进行操作。但即使在变化之后,我仍然会得到“......预计会有一个根控制器......”警告。
如果有人有时间看一看并让我知道我错过了什么,我已在下面列出了我的初始化代码的重要部分。
谢谢,
约翰
//RootViewController.h
#import <UIKit/UIKit.h>
@interface RootViewController : UIViewController {
}
@end
//RootViewController.m
#import "RootViewController.h"
#import "JetLoggerAppDelegate.h"
@implementation RootViewController
@end
//JetLoggerAppDelegate.h my app delegate
#import <UIKit/UIKit.h>
@class RootViewController;
@interface JetLoggerAppDelegate : NSObject <UIApplicationDelegate> {
UIWindow *window;
RootViewController *rootViewController;
}
@property (nonatomic, retain) IBOutlet UIWindow *window;
@property (nonatomic, retain) IBOutlet RootViewController *rootViewController;
@end
//.m app delegate
#import "JetLoggerAppDelegate.h"
#import "RootViewController.h" //I don't think I need this here
@implementation JetLoggerAppDelegate
@synthesize window;
@synthesize rootViewController = _rootViewController;
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
if ([launchOptions count] == 0) {
_rootViewController = [[RootViewController alloc] init];
self.window.rootViewController = self.rootViewController;
[window makeKeyAndVisible];
return YES;
}else{
[JLHelper showAlertWithTitle:@"" message:[NSString stringWithFormat:@"launchOptions: %@", launchOptions]];
}
return NO;
}
//main.m
#import <UIKit/UIKit.h>
int main(int argc, char *argv[]) {
NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];
int retVal = UIApplicationMain(argc, argv, nil, @"JetLoggerAppDelegate");
[pool release];
return retVal;
}
答案 0 :(得分:1)
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
if ([launchOptions count] == 0) {
_rootViewController = [[RootViewController alloc] init];
self.window.rootViewController = self.rootViewController;
**[window addSubview:_rootViewController.view];**
[window makeKeyAndVisible];
return YES;
}else{
[JLHelper showAlertWithTitle:@"" message:[NSString stringWithFormat:@"launchOptions: %@", launchOptions]];
return NO;
}
return nil;
}
在else语句中放回NO,最后把return nil;希望这有帮助。
答案 1 :(得分:0)
应用程序应具有根视图控制器
在AppDelegate中替换
[window addSubview:[someController view]];
到
[self.window setRootViewController:someController];