4

我想我找到了原因:IB 中的文档信息窗口有一个警告:“'Selected Navigation Controller (Second)' has nib name property set to 'SecondView.nib', but this view controller is not to have its view以这种方式设置。”

真可惜。


我已经在 Interface Builder 中构建了 nib,它具有UITabBarController顶层并在UINavigationControllers 之间切换。

当所有内容都在一个nib文件中时它工作正常,但我想nib为 s 使用单独的文件UINavigationController

从 Apple 的 TabBar 模板开始,如果我只是将 SecondView 的类更改为UINavigationController,这一切都会中断:

第二个笔尖

我得到的只是:

// imgur has lost the image, sorry //

UINavigationController是否可以在不以编程方式设置所有内容的情况下拥有单独的文件?

我想TabBarController处理笔尖的装卸。

4

5 回答 5

5

我还没有尝试通过 IB 设置 UINavigationController。我有多个屏幕,每个屏幕都存储在单独的 xib 中,并且有一个扩展 UIViewController 的相应类。在 applicationDidFinishLaunching 中,我使用 xib 初始化 UIViewControllers,然后手动创建 UINavigationController,将导航控制器的视图添加到窗口并将第一个视图推送到导航控制器。

不确定这是否有帮助。

- (void)applicationDidFinishLaunching:(UIApplication *)application {    

    navigationController = [[UINavigationController alloc] init];

    FirstViewController * viewController = [[FirstViewController alloc] 
                                           initWithNibName:@"FirstView"
                                                    bundle:nil];
    [navigationController pushViewController:viewController animated:NO];
    [viewController release];
    [window addSubview:navigationController.view];
    [window makeKeyAndVisible];
}

FirstViewController 上面扩展了 UIViewController,在 IB 中创建视图,然后将 File 的所有者类设置为您的类(例如这里的 FirstViewController)并将 File 的所有者视图连接到 UIView 的视图。

于 2009-05-19T15:49:26.897 回答
5

只需将 UINavigationController 与 FirstViewController 交换即可。

所以层次结构应该是这样的:

Tab bar controller
-----Tab bar
-----Navigation Controller
----------First View Controller
---------------Navigation Item
----------Tab bar item (First)
-----Navigation Controller
----------Second View Controller
---------------Navigation Item
----------Tab bar item (Second)

您在检查器中将 First View Controller 的 nib 设置为包含实际视图对象的 nib 文件(因为您试图将它们拆分为单独的文件,这是一件好事)。

您有一个选项卡,该选项卡有一个导航控制器,它将 First View Controller 作为其根视图加载。

完毕。

于 2009-05-19T21:12:14.047 回答
1

我相信你正在寻找这样的东西。您可以将“whatever”替换为您的第二个 nib 文件的名称。

newNavController = [[UINavigationController alloc] initWithNibName:@"whatever" bundle:[NSBundle mainBundle]];
于 2009-05-19T15:48:13.590 回答
1

首先,看起来您的UITabBarItems导航控制器下,而不是直接在UITabBarController. 这可能是您问题的一部分。

其次,当您UITabBarController在 IB 中添加一个并单击顶层对象列表中的图标(您的第一个屏幕截图)时,属性检查器将允许您更改每个选项卡的视图控制器的类型。使用它,您可以根据需要将它们全部更改为导航控制器。此外,由于您想从其他 nib 加载自定义视图和视图控制器,如果您查看属性检查器底部的“视图控制器”部分,您可以从项目中选择一个 nib 来加载视图。假设 nib 的“文件所有者”设置为您的UINavigationController子类,它应该可以正常工作。

所有这些都不需要大量的编码工作。让我知道您是否想要我正在谈论的内容的屏幕截图,以防您找不到这些面板。

于 2009-05-19T16:04:38.377 回答
0

我发现了同样的警告。我将所有视图控制器保存在单独的 xib 文件中。我通过删除 .nib 名称并将其保留为空来摆脱它。

于 2010-12-24T14:51:52.800 回答