如何在不丢失导航栏的情况下将子视图添加到导航控制器?

时间:2012-03-24 02:18:23

标签: ios cocoa-touch uitableview uiview uinavigationcontroller

我有一个SplitViewController,它有两个UITableViewControllers - 一个主/一个细节。一切都在游泳。

我有一个UIView,它在用户选择根视图控制器中的项目之前显示在详细视图控制器上。它的设置如下:

[self.navigationController.view addSubview:makeSentenceHelperView];
[self.navigationController.view bringSubviewToFront:makeSentenceHelperView];

detailViewController的设置如下:

UINavigationController *detailNav = [[[UINavigationController alloc] initWithRootViewController:detailViewController] autorelease];

其中detailViewController是UITableView的子类。

问题是此子视图隐藏了详细视图控制器导航栏中的按钮和导航栏 - 当您以纵向模式启动SVC时,这是一个问题(无法选择具有根弹出窗口的根项目)。

enter image description here

如何在导航控制器中显示视图,以便导航栏和按钮显示在详细视图中?

2 个答案:

答案 0 :(得分:0)

不要让detailViewController成为UIView的子类,而是使用UIViewController。因此,您的splitView数组将包含UINavigationController(rootVC)和UIViewController(detailVC)的其他实例。

detailViewController顶部添加工具栏,在横向模式下,左侧将覆盖您的rootVC的UITableView,您将可以看到工具栏,您可以在其右侧添加一些按钮方(可能会作为导航栏.. :)。其余的事情可由UISplitViewControllerDelegate处理。

答案 1 :(得分:0)

为了解决这个问题,我向我的助手UIView添加了一个UINavigationController,并添加了一个UIButtonBarItem来调用popover以在主视图中选择一个新项目。回想起来似乎很简单。唯一棘手的一点就是在横向时隐藏UIButtonBarItem。