0

我有一个 ipad 应用程序。

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

所以当视图 1 被关闭时,我试图打开视图 2……</p>

- (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 没有打开。我知道我不能做推送视图。但是有什么方法可以实现吗?

4

2 回答 2

0

如果您不使用情节提要,请尝试使用 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];

                            }];

或者,如果您使用的是故事板,则使用标识符获取 NewViewController。

于 2014-01-15T12:13:01.747 回答
0

当你这样做时dismissViewControllerAnimatedUIViewController(在这种情况下是自我)消失了,从某种意义上说,他不再出现在屏幕上,无论它是否已被释放,那就是另一回事了。您无法显示View2(非常糟糕的名称,至少 ViewController2应该)的原因是因为您正试图从UIViewController不再显示在屏幕上的名称中显示它。

所以,你可以做什么?

当前selfhandleNewButton方法的上下文中,理论上是由另一个呈现的UIViewController,那是你想要呈现你的View2.

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

于 2014-01-15T11:59:36.680 回答