UINavigationController initiWithNibName未从.xib文件加载设计

时间:2011-11-05 18:50:35

标签: objective-c ios uinavigationcontroller interface-builder

在app delegate中,在didFinishLaunchingWithOptions函数中,我有以下代码来加载一个UINavigationController的视图:

 UINavigationController *navcon=[[UINavigationController alloc] initWithNibName:@"ThirdView" bundle:[NSBundle mainBundle]];

FirstView *fv=[[FirstView alloc] init];

[navcon pushViewController:fv animated:NO];

[fv release];


[self.window addSubview:navcon.view];


[self.window makeKeyAndVisible];
return YES;

.xib“ThirdView”,即UINavigationController视图,在Interface Builder中实际上是这样的:

enter image description here

但是当我运行应用程序时,应用程序看起来像这样:

enter image description here

为什么应用程序没有加载“ThirdView.xib”UINavigationController的导航栏设计,因为我在Interface Builder中设计了它?

更新:以下是IB中“FirstView”的样子: enter image description here

2 个答案:

答案 0 :(得分:0)

我不相信你想要做的事情是有效的。 UINavigationController旨在成为其他视图的容器。你创建了UINavigationController,然后通过pushViewController:animated:将视图控制器推到它上面来添加你的内容。它是使用.xib文件创建的推送视图控制器。

答案 1 :(得分:-1)

导航控制器中的每个UIViewController都负责提供要在导航栏上显示的内容。

在您的视图中,FirstView的didLoad方法执行以下操作

self.navigationItem.title = @"your title";

但是你也可以发布你的FirstView在IB中的样子吗?


我个人从未在IB中设置导航栏。 在这里,您可以在导航栏的代码中设置2按钮

self.navigationItem.leftBarButtonItem = self.editButtonItem;

UIBarButtonItem *addButton = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemAdd target:self action:@selector(insertNewObject)];
self.navigationItem.rightBarButtonItem = addButton;
[addButton release];

此代码来自UITableViewController子类。