如何在没有xib的情况下使用UINavigationController?

时间:2011-05-11 06:21:37

标签: cocoa-touch ios uinavigationcontroller

我对Interface Builder有一种非理性的厌恶。

这是我到目前为止所得到的,我得到的只是黑屏。

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
    // Override point for customization after application launch.
    // Add the navigation controller's view to the window and display.
    PrayViewController* prayViewController = [[PrayViewController alloc] initWithTabBar];
    [_window addSubview: [[UINavigationController alloc] initWithRootViewController:prayViewController]];
    [prayViewController release];
    [self.window makeKeyAndVisible];
    return YES;
}

2 个答案:

答案 0 :(得分:1)

您应该向窗口添加一个视图,如下所示:

UIViewController *rootController = [[MyRootViewController alloc] init];
navigationController = [[UINavigationController alloc]
                            initWithRootViewController:rootController];
[rootController release];

window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];

// *** IMPORTANT DIFFERENCE:
[window addSubview:navigationController.view];

[window makeKeyAndVisible];

您正在将导航视图控制器的整个实例添加到窗口中。

UIWindow是UIView的后代,所以它只是继承了addSubview method。它期望另一个UIView作为参数。

答案 1 :(得分:0)

我会检查你的窗口和它的视图是否通过NSLog返回你所期望的。没有看到创建窗口及其视图的代码,很难说,但我怀疑其中一个没有正确创建。