从模态视图中访问导航控制器?

3
我正在使用导航控制器。我的 RootViewController 推送了许多视图,但它也呈现了一个模态视图。该模态视图显示一个 tableView。因此,我试图找出是否可以将导航控制器推到模态视图上,然后从该模态视图使用它来推动带有 tableView 的视图?或者除此之外,是否有一种方法可以从模态视图中实现第二个导航控制器?
真正的问题是我想使用从右到左的转换方式呈现带有 tableView 的视图,而模态视图当然不支持此功能。
我有这段代码,可以在某种程度上提供导航控制器使用的从右到左的转换:
NewViewController *newViewController = [[NewViewController alloc] init];
[self presentModalViewController:newViewController animated:NO];

CGSize theSize = CGSizeMake(320, 460);
newViewController.view.frame = CGRectMake(0 + theSize.width, 0 + 20, theSize.width, theSize.height);
[UIView beginAnimations:@"animationID" context:NULL];
[UIView setAnimationDuration:0.5];
newViewController.view.frame = CGRectMake(0, 0 + 20, 320, 460);
[UIView commitAnimations];
[newViewController release];

问题在于旧视图控制器(调用新视图控制器的那个)立即消失,因此新视图控制器在空白屏幕上进行转换,而不是覆盖旧视图控制器。

你可以使用 presentModal...animated:false 来进行 UIView 动画。有没有什么理由来覆盖 presentmodal... 动画呢? - Waqas Raja
1
我正在尝试获取只有导航控制器才能实现的从右到左的动画过渡。 - Lauren Quantrell
很难确定这里在问什么。这个问题含糊不清,模糊不清,不完整... - tc.
1个回答

10

以模态方式呈现UIViewController会创建一个全新的导航堆栈。您可以像这样执行操作:

//Create the view you want to present modally
UIViewController *modalView = [[UIViewController alloc] init];
//Create a new navigation stack and use it as the new RootViewController for it
UINavigationController *nav = [[UINavigationController alloc] initWithRootViewController:modalView];
//Present the new navigation stack modally
[self presentModalViewController:nav animated:YES];
//Release
[modalView release];
[nav release];

这是可行的,因为UINavigationController是UIViewController的子类。当新视图被加载时,您可以随意使用它(在其上推入另一个视图,使用像Waqas建议的UIView动画等)。

我希望我正确理解了您的问题。如果我理解错了,请告诉我。


谢谢。我现在有这个:[RootViewController1] --> 呈现 [ModalViewController2] --> 呈现 [带模态转换的ViewController3]。我现在想要的是这个:[RootViewController1] --> 呈现 [ModalViewController2] --> 呈现 [带导航控制器转换的Pushed ViewController3]。使用你提出的方法可以实现吗? - Lauren Quantrell
这应该能解决问题。想一想,我相信这里有一个简单的解决方案 - 你可以在viewDidAppear方法中以模态方式呈现第一个视图,然后将表格视图推到它上面。 - nadavhart
此外,如果由于中间视图而出现延迟,您可以尝试使用Animated:NO将其模态推送。 - nadavhart
好的,我会看一下,虽然似乎按照我上面的代码做一个动画会更加简洁,只要我能让它看起来正确。 - Lauren Quantrell

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接