Ios 在UINavigationController中推送视图控制器

Ios 在UINavigationController中推送视图控制器,ios,ios7,uiviewcontroller,uinavigationcontroller,uitabbarcontroller,Ios,Ios7,Uiviewcontroller,Uinavigationcontroller,Uitabbarcontroller,我有一个带有导航控制器的选项卡视图控制器。在第一个选项卡项中,我单击视图中的一个按钮,弹出一个带有动画的视图:是 然后,当视图完成时,我点击另一个按钮,将其取消。比如: [self dismissViewControllerAnimated:NO completion:^{ ProfilesViewController *profile = [[ProfilesViewController alloc] in

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

然后,当视图完成时,我点击另一个按钮,将其取消。比如:

                   [self dismissViewControllerAnimated:NO completion:^{

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

                        //SHOW YOUR NEW VIEW CONTROLLER HERE!
                    }];
但每次运行此代码时,它都会取消视图,不推送profiles控制器,并从第一个选项卡栏项显示视图

如何使用返回箭头将ProfilesViewController推到屏幕上?

如果使用dismissViewControllerAnimated关闭,则意味着VC以模式显示。因此,它没有导航控制器,因此self.navigationController为nil,因此无法将任何内容推入导航控制器

您应该向控制器添加一个属性,它是一个委托或一个完成块,可用于从另一个控制器推送控制器—呈现它的控制器—来解除并推送控制器

第二个选择是传递导航控制器,它的代码量与使用块的代码量相似,但不是很好


一个糟糕的选择是使用parentViewController来查找合适的导航控制器,但由于许多原因,这很糟糕。

尝试将viewcontroller作为根用户呈现给导航控制器。然后将ProfilesViewController从该viewcontroller本身推送。我应该将哪个设置为root?将显示的视图控制器设置为root到navigationcontroller。并按下ProfilesViewController,完成任务后调用dismissViewControllerAnimated。因此选项卡视图控制器有4个视图控制器。每个按钮上都有一个按钮,弹出上面的代码并将其删除。我在哪里创建属性?属性被添加到弹出的VC中,因为它需要一个委托来告诉它何时完成,这样委托就可以推动你的另一个VCO,而不是百分之百地告诉你如何正确地实现它上面的这一部分,你真的应该给控制器添加一个属性,它是一个委托或一个完成块,可以用来推动控制器从另一个控制器中出现如果要将控制器添加到启动控制器中,则需要关闭并推送控制器。否,对委托来说,它是什么并不重要,只要它实现了协议