在UINavigationController中推送视图控制器

时间:2014-10-09 07:55:07

标签: ios ios7 uiviewcontroller uinavigationcontroller uitabbarcontroller

我有一个带导航控制器的标签视图控制器。在第一个标签项中,我单击视图中的一个按钮,弹出一个带有动画的视图:YES。

然后当该视图完成后,我点击了另一个关闭它的按钮。像:

                   [self dismissViewControllerAnimated:NO completion:^{

                        ProfilesViewController *profile = [[ProfilesViewController alloc] init];
                        [self.navigationController pushViewController:profile animated:YES];

                        //SHOW YOUR NEW VIEW CONTROLLER HERE!
                    }];

但每次运行此代码时,它都会关闭视图,不会推送配置文件控制器,并显示第一个标签栏项目的视图。

如何使用后退箭头将ProfilesViewController推送到屏幕?

1 个答案:

答案 0 :(得分:2)

如果您使用dismissViewControllerAnimated来解雇,则意味着VC以模态方式呈现。因此,它没有导航控制器(因此self.navigationController为零),因此无法将任何东西推入导航控制器。

您应该向控制器添加一个属性,该控制器是委托或完成块,可用于将控制器从另一个控制器(显示它的控制器)推出以解除并推送控制器。

第二种选择是通过导航控制器,使用一个块的代码数量相似但不太好。

一个糟糕的选择是使用parentViewController来找到合适的导航控制器,但这很糟糕。