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

Posted

技术标签:

【中文标题】如何在没有 xib 的情况下使用 UINavigationController?【英文标题】:How do I use the UINavigationController without a xib? 【发布时间】:2011-05-11 06:21:36 【问题描述】:

我对 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;

【问题讨论】:

【参考方案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 作为参数。

【讨论】:

【参考方案2】:

我会检查您的窗口和它的视图是否通过 NSLog 返回了您期望的内容。如果没有看到创建窗口及其视图的代码,很难判断,但我怀疑其中一个没有正确创建。

【讨论】:

以上是关于如何在没有 xib 的情况下使用 UINavigationController?的主要内容,如果未能解决你的问题,请参考以下文章

如何在没有xib文件的情况下使用uiviewcontroller

如何在没有 .xib 文件的情况下添加 iads?

如何在没有 XIB 文件的情况下以编程方式更新 Xcode 中的 UILabel?

如何在没有 .xib 或故事板文件的情况下向应用程序添加菜单?

如何在不使用自动布局的情况下以 XIB/故事板大小查看手机尺寸

如何制作没有 xib 或故事板 vc 标识符的视图控制器?