如何创建推送视图控制器并在前面滑动另一个视图控制器的模块转换?

时间:2014-11-02 20:11:08

标签: ios objective-c uinavigationcontroller uinavigationbar

很抱歉,如果我的标题太可怕了,我试图创建一个像ios中的邮件一样弹出的导航控制器,如下所示:

enter image description here

1 个答案:

答案 0 :(得分:0)

一个简单的解决方案(因此它可能不是编程最正确的,我不确定),可以在父ViewController中设置ViewController(一个像邮件一样出现,一个在他后面),并管理他们的视图喜欢。

我做得很快:

enter image description here

两个ViewController都可以工作,当然你可以禁用底部的一个并在图像中设置灰色视图。

代码:

在底部ViewController中创建一个新的NavigationController,其中包含您要推送的ViewController,然后将其添加为第一个的子节点:

nav = [[UINavigationController alloc] initWithRootViewController:[VcWithNavViewController new]];
[nav.view setFrame:CGRectMake(self.view.bounds.origin.x, self.view.bounds.size.height, self.view.bounds.size.width, 500)];
[self addChildViewController:nav];
[self.view addSubview:nav.view];
[nav didMoveToParentViewController:self];

然后在时机成熟时简单地将该孩子的视图设置为动画:

- (void) popViewController {
[UIView animateWithDuration:2 delay:5 options:UIViewAnimationOptionCurveEaseInOut animations:^{
    [nav.view setFrame:CGRectMake(0, 200, self.view.bounds.size.width, 500)];
} completion:nil];

}