我创建了一个非常简单的应用程序,其中UINavigationController作为根控制器,但是当我运行它时,只显示导航栏的一半(左侧)。为什么是这样?这看起来很奇怪 - 如果我做错了什么你会认为它根本不会显示,而是只有它的一半!
控制器如下所示:
@interface RootController : UINavigationController { UIWebView* webView; NSMutableString *htmlString; }
使用相应的@property声明和@synthesize。
我没有将任何.nib用于视图控制器/视图。应用代表是:
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { RootController* theRVC = [[RootController alloc] init]; self.window.rootViewController = theRVC; [theRVC release]; [self.window makeKeyAndVisible]; return YES; }
控制器具有以下相关代码:
- (void)loadView { webView = [[UIWebView alloc] initWithFrame:[[UIScreen mainScreen] applicationFrame]]; self.view = webView; [webView release]; } - (void)viewDidLoad { [super viewDidLoad]; }
答案 0 :(得分:1)
您不应该从UINavigationController
派生。
相反,从UIViewController派生您的RootController
类。
然后,在应用程序委托中,初始化一个传入RootController的UINavigationController,并将其设置为windows rootViewController。
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
RootController* theRVC = [[RootController alloc] init];
UINavigationController *navController = [[UINavigationController alloc] initWithRootViewController:theRVC];
self.window.rootViewController = navController;
[theRVC release];
[navController release];
[self.window makeKeyAndVisible];
return YES;
}