当前视图(全屏)控制器同时取消视图1,这是模型视图本身

时间:2014-01-15 11:52:23

标签: ios ipad presentviewcontroller

我有一个ipad应用程序。

我试图用整个屏幕打开视图2(一种推视图)。推送视图或UIModalPresentationFullScreen通常如何。但我的基本视图是视图1也是模态视图。

所以我试图打开视图2,当视图1被解雇时......

- (void) handleNewButton :(int)id
{
               [self dismissViewControllerAnimated:YES
                                 completion:^{
                                     NewViewController *View2 = [NewViewController alloc] init];
                                    View2.modalPresentationStyle = UIModalPresentationFullScreen;
                                     View2.modalTransitionStyle = UIModalTransitionStyleCrossDissolve;

                                     [self presentViewController: View2 animated:YES completion:nil];

                                 }];

 }

但是我的观点2没有打开。我知道我不能做推视图。但有没有办法实现它?。

2 个答案:

答案 0 :(得分:0)

当你这样做dismissViewControllerAnimated UIViewController(在这种情况下是自我)已经消失,因为他不再在屏幕上,如果它已被释放,那就是另一个故事。您无法显示View2(名称非常差,至少 ViewController2)的原因是因为您试图通过{{ 1}}不再出现在屏幕上。

那么,你能做什么?

UIViewController方法的上下文中的当前self理论上是由另一个handleNewButton呈现的,这是您想要呈现UIViewController的地方。

实施我所说的最快的方法可能是通过here描述的通知。虽然我会用一个块来做,所以当创建View2时,我会传递一个self,当dismissiCompletionBlock被解除时,它会被调用。

答案 1 :(得分:0)

如果您不使用storyboard,请尝试使用nib名称分配NewViewController,

 [self dismissViewControllerAnimated:YES
                                 completion:^{
        NewViewController *n=[[NewViewController alloc]initWithNibName:@"NewViewController" bundle:nil];

          View2.modalPresentationStyle = UIModalPresentationFullScreen;
          View2.modalTransitionStyle = UIModalTransitionStyleCrossDissolve;
          [self presentViewController: View2 animated:YES completion:nil];

                            }];

或者如果您正在使用storyboard,请使用标识符获取NewViewController。