Iphone 从模式视图控制器推送UIViewController

Iphone 从模式视图控制器推送UIViewController,iphone,xcode,uinavigationcontroller,Iphone,Xcode,Uinavigationcontroller,我正在一个iPad应用程序中使用一个分割视图控制器 现在,我有一个视图显示在模态视图控制器中,使用: [self presentModalViewController:viewController animated:YES]; 这很好,但是当用户按下按钮时,我希望根视图控制器推到另一个视图。我正在使用: RootViewController *rvc = [[RootViewController alloc] initWithNibName:@"RootViewController" bund

我正在一个iPad应用程序中使用一个分割视图控制器

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

[self presentModalViewController:viewController animated:YES];
这很好,但是当用户按下按钮时,我希望根视图控制器推到另一个视图。我正在使用:

RootViewController *rvc = [[RootViewController alloc] initWithNibName:@"RootViewController" bundle:nil];
[rcv pushViewController:rvc animated:YES];
但这是行不通的。我该怎么办

--编辑

现在,我正在使用

PhotosViewController *pv = [[PhotosViewController alloc] initWithNibName:@"PhotosViewController" bundle:nil];
[self.parentViewController.navigationController pushViewController:pv animated:YES];
NSLog(@"Navigation Controller: %@", self.parentViewController.naviagtionController);
当我调用NSLog时,它返回nil。为什么呢

再一次,我正在使用一个分割视图控制器,并试图将RootViewController推送到一个新视图


谢谢

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

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

我知道这是一个老问题,但我相信“现在”将viewController从模式viewController推送到主导航堆栈上的正确方法是在模式上创建“didTapShowBlahViewController”委托(这是假设您希望用户完成现有模式视图,然后将新视图推送到堆栈上)。拥有该委托后,您只需拥有一个视图,该视图最初调用了该模态,以在触发委托时执行取消该模态并按下下一个视图控制器的操作

- (void)didTapShowBlahViewController{
    [self dismissViewControllerAnimated:YES completion: nil];
    [self performSegueWithIdentifier:@"segueToBlahViewController" sender:self];
}
这是基于指定将数据传递给子视图控制器并使用委托将数据传递回父视图控制器的


仅供参考:这种方式还可以确保“返回”按钮不会返回到模态,而是返回到调用模态的视图,这是模态通常使用的方式。

这不起作用,我更新了帖子以显示我的新问题。