我一直看到这个问题并通过在代码中手动创建 UINavigationController 来解决它。有人可以告诉我,当我从 XIB 的属性检查器添加导航栏 - > 将顶部栏设置为黑色导航栏时,它会显示在 XIB 中,但是当我运行程序时,它不会出现!我注意到 self.NavigationController 即将为零,所以我在我的 XIB 中添加了 UINavigationController 并分配了 NIB,但它仍然为零!这有什么问题?我需要任何其他设置吗?
[编辑1]
我尝试像下面那样添加它并且它可以工作,但我希望父类自动将旋转和外观事件转发给子控制器。如果我关注它,它不会发送它们,因为我将 nvc 添加为子元素而不是市场列表视图控制器。所以我想我必须继承 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];
[编辑2]
我已将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];
[编辑3]
我在 Edit1 中错了,当我将子控制器添加为导航控制器的根控制器时,子控制器不会获得旋转事件。父母仍然自动发送所有事件,这就是我想要的!:)