ViewController中的导航控制器 - iOS

时间:2013-07-18 18:47:29

标签: ios uinavigationcontroller

如下图所示,我实现了导航控制器前后移动。 这很好。

我的问题是如何在tableViewController的页面中实现另一个导航控制器。每当用户点击任何列时,都会让他详细说明所选列的信息。

我想知道如何在页面中实现导航控制器。

enter image description here

1 个答案:

答案 0 :(得分:0)

UISplitViewController似乎是你想要的最佳解决方案,但既然你说你不想使用它,那么让我们直接回答问题吧。 没有什么可以阻止您以编程方式创建UINavigationController,使用某个视图控制器启动它,并将所述UINavigationController添加为当前视图控制器的子视图。

因此,您将拥有主要的NavigationController,它在给定视图上有一个视图控制器,左侧是一个表视图,右侧是一个地图视图。当用户单击相应的表条目时,您将导航控制器添加到当前视图控制器,无论您想要的大小/位置(例如,在地图下方,或者可能在地图上,完全隐藏它?)。当用户希望删除导航控制器(可能单击另一个表项?)时,只需删除导航控制器子视图。

您可能需要将所述导航控制器添加为childViewController,以允许它获取所有整齐的旋转函数调用和内容。我实际上已经定义了将视图添加为childViewController和子视图,然后根据需要删除它。当然,这假设你有一个视图,你要添加导航控制器;并且您希望导航控制器占用整个视图(以便适当调整视图大小)

#define addChildViewController(childController, parent) { \
    [self addChildViewController:childController]; \
    childController.view.frame = CGRectMake(0,0,parent.frame.size.width,parent.frame.size.height); \
    [parent addSubview:childController.view]; \
    [childController didMoveToParentViewController:self]; \
}

#define removeChildViewController(child) { \
    [child willMoveToParentViewController:nil]; \
    [child.view removeFromSuperview]; \
    [child removeFromParentViewController]; \
}