导航控制器的视图作为ViewController中的子视图

时间:2012-09-11 21:11:07

标签: ios uikit

我正在制作iPad应用程序。

我希望我的应用程序的设计包含iPhone大小的部分屏幕,这将具有表单样式的分组表视图。用户可以使用它来编辑/添加信息。

表格视图中的一个“按钮”(行)将有一个公开图标作为附件视图,当点击时我想滑动该表另一个视图。

理想情况下,我会在屏幕上的某个部分(在视​​图控制器的视图中)添加UINavigationController's视图说:

CGRectMake(self.view.frame.size.width / 2, 20, 320, 400);

但正如Apple文档所述,您不应该以这种方式使用导航控制器(作为现有视图控制器上的子视图)。

我可以做些什么来模仿或解决这个问题?

2 个答案:

答案 0 :(得分:1)

我已经看过它了,它确实会在你显示的控制器上带来一些关于viewWillAppear / willRotate / etc方法的故障。

解决方法是在添加/删除导航控制器时手动调用导航控制器上的viewWillAppear / etc,但这不是最好的方法。

另一种方法是在不可忽略的弹出窗口上显示此控制器,您可以通过实现UIPopoverController委托函数来实现:

- (BOOL)popoverControllerShouldDismissPopover:(UIPopoverController *)popoverController {
    return NO;
}

这将使用户无法通过单击其外部来解除它。你可以从一个条形按钮项目(它将在旋转后自动定位)或从一个矩形(你必须在旋转后重新定位它)显示的弹出窗口,但你可以不显示弹出方向箭头,使它“将鼠标悬停在父视图控制器上。

答案 1 :(得分:0)

创建一个适合该区域的UIView,并让该视图托管表格以及您想要的任何其他内容。如果您需要像导航栏那样“推送”视图,则可以使用视图动画或UIView的过渡方法。如果我这样做,我可以创建一个“帮助者”类来管理所有这些视图和控件 - 或者至少是现有类的类别 - 以免弄乱你的主要类。