我是iPhone开发的新手。我尝试使用窗口和导航控制器构建一个简单的应用程序作为此窗口的子视图。问题是:启动应用程序时子视图没有加载。我只有一个黑色的窗户。要加载视图控制器,我必须退出应用程序并再次启动它,然后我有导航控制器的子视图。我在窗口中直接添加了一个按钮,以确保黑屏不成问题,但我在启动时看到了按钮。
这是我在AppDelegate中的代码:
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
self.window = [[[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]]autorelease];
[self.window addSubview:_navigationController.view];
[self.window makeKeyAndVisible];
return YES;
}
你有解决这个问题的方法吗?
谢谢。
答案 0 :(得分:2)
您需要确保已设置视图层次结构。窗口的rootViewController将是UINavigationController。 UINavigationController控制viewControllers的层次结构,因此当您实例化它时,您需要分配一个rootViewController。这通常是UITableView的子类。
因为您正在分配/启动窗口,所以我假设您没有UINavigationController的XIB / NIB和UITableViewController之类的关联rootViewController。此外,您需要将rootViewController分配给窗口,而不是添加导航控制器的视图。从iOS4开始,这是首选方式。另见here。试试这段代码:
YourViewController *yourViewController = /* code for alloc/initing your viewController */
_navigationController=[[UINavigationController alloc] initWithRootViewController:yourViewController ]
self.window.rootViewController=_navigationController; /* instead of using [self.window addSubview: _navigationController.view] */
[self.window makeKeyAndVisible];
如果你正在使用XIB / NIB,那么你需要确保_navigationController连接到XIB文件并且有一个viewController的子类,因为它是rootViewController。
祝你好运