我一直在看到这个问题,并通过在代码中手动创建UINavigationController来解决它。有人可以告诉我,当我从XIB的Attribute Inspector - > Set Top bar添加到黑色导航栏时,它会显示在XIB中,但是当我运行程序时,它不会出现!我注意到self.NavigationController到了零,所以我在我的XIB中添加了UINavigationController并分配了NIB,但仍然是零!这有什么问题?我是否需要其他设置?iOS:从XIB添加导航栏
[EDIT1]
我尝试添加像下面和它的作品,但我想父类自动转发的旋转和外观事件,孩子控制器。如果我遵循它将不会发送它们,因为我将nvc添加为child而不是marketsListViewController。所以我想我必须继承UINavigationController。参见EDIT2。
self.marketsListViewController = [[MarketsListViewController alloc] initWithNibName:@"MarketsListViewController" bundle:nil];
UINavigationController *nvc = [[UINavigationController alloc] initWithRootViewController:self.marketsListViewController];
nvc.navigationBar.barStyle = UIBarStyleBlack;
[self.marketsListView addSubview:nvc.view];
[self addChildViewController:nvc];
[nvc didMoveToParentViewController:self];
[EDIT2]
我有子类marketsListViewController到UINavigationController的,并认为以下工作,但事实并非如此。它只是显示导航栏,UITableView不显示!
self.marketsListViewController = [[MarketsListViewController alloc] initWithNibName:@"MarketsListViewController" bundle:nil];
self.marketsListViewController.navigationBar.barStyle = UIBarStyleBlack;
[self.marketsListView addSubview:self.marketsListViewController.view];
[self addChildViewController:self.marketsListViewController];
[self.marketsListViewController didMoveToParentViewController:self];
[EDIT3]
我错在EDIT1,孩子控制器不会得到旋转活动时,我添加子作为导航控制器的根控制器。家长仍然自动发送所有事件,这就是我想要的! :)
谢谢@Celeb清除我的怀疑!我编辑了这个问题。请看一看。我在容器视图中有很多屏幕,并且它们中的一些具有导航栏。 MarketsListViewController是问题中显示在XIB中的视图控制器。 Self代表容器视图控制器。 – applefreak
嗨@Celeb不幸的是我不能在AppDelegate中做它,因为它不是我唯一的视图控制器。父(容器)视图控制器没有导航栏。它有大约8-10个子控制器,其中的几个必须有导航栏来启用嵌套视图。但无论如何,我认为我更接近解决方案。如果您看到Edit1,它可以工作,但我无法使用它,因为我希望子控制器能够自动接收父代转发的旋转事件。所以我有我的视图控制器的子类UINavigationController并做了同样的事情,但不行!它只显示导航栏! – applefreak
@AppleDeveloper对不起,我无法清楚地了解你要在这里做什么。对UINavigationController进行子类化并不常见 - 这可能不是正确的做法。如果您还没有,我强烈建议您阅读“视图控制器编程指南”。 – Caleb