0

我是 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;
}

你有解决这个问题的方法吗?

谢谢你。

4

1 回答 1

2

您需要确保已设置视图层次结构。窗口的 rootViewController 将是 UINavigationController。UINavigationController 控制 viewController 的层次结构,因此在实例化它时,需要分配一个 rootViewController。通常这是 UITableView 的子类。

因为您正在分配/初始化窗口,所以我假设您没有带有 UINavigationController 的 XIB/NIB 和关联的 rootViewController(如 UITableViewController)。此外,您需要将 rootViewController 分配给窗口,而不是添加导航控制器的视图。从 iOS4 开始,这是首选的做事方式。也见这里。试试这个代码:

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 连接。

祝你好运

于 2011-12-03T20:56:20.573 回答