从模态视图控制器推UIViewController

问题描述:

我正在试图使用iPad应用程序中的分割视图控制器。从模态视图控制器推UIViewController

现在,我有一个观点被显示在使用模态视图控制器:

[self presentModalViewController:viewController animated:YES]; 

和工作正常,但是当用户按下一个按钮,我想根视图控制器推到另一个视图。我正在使用:

RootViewController *rvc = [[RootViewController alloc] initWithNibName:@"RootViewController" bundle:nil]; 
[rcv pushViewController:rvc animated:YES]; 

但这是行不通的。我该怎么办?

--edit

现在,我使用

PhotosViewController *pv = [[PhotosViewController alloc] initWithNibName:@"PhotosViewController" bundle:nil]; 
[self.parentViewController.navigationController pushViewController:pv animated:YES]; 
NSLog(@"Navigation Controller: %@", self.parentViewController.naviagtionController); 

当我这样做的NSLog调用,它返回零。这是为什么?

再次,我正在使用拆分视图控制器,并试图将RootViewController推到新的视图。

感谢

您的代码不工作,因为你创造了一个RootViewController实例,然后试图将其推到自身。你应该做的是推新视图控制器到父视图控制器的导航控制器:

[self.parentViewController.navigationController pushViewController:newViewController animated:YES]; 
+0

这不工作,我更新了帖子,以显示我的新问题。 – tallen11 2011-05-05 19:32:10

+0

没关系,我得到它的工作,谢谢! – tallen11 2011-05-09 23:06:31

我知道这是一个老问题,但我相信有道“现在”推的viewController到主导航从模态viewController堆栈是在模态上创建一个“didTapShowBlahViewController”委托(假设你想用户完成现有模态视图,然后将新视图推入堆栈)。一旦你有了这个委托,你只需拥有最初调用该模式的视图来执行解除模式并在代理被触发时推送下一个视图控制器。

- (void)didTapShowBlahViewController{ 
    [self dismissViewControllerAnimated:YES completion: nil]; 
    [self performSegueWithIdentifier:@"segueToBlahViewController" sender:self]; 
} 

这是基于Apple's View Controller Programming Guide指定将数据传递到子视图控制器和使用委托将数据传回给家长。参考:这种方式还可以确保“返回”按钮不会返回到模态,而是返回到调用模态的视图,这就是典型的模态使用方式。