将视图推送到不在相同视图层次结构中的UINavigationController
我有两个表格视图。 一个显示项目列表,说食谱名称。 另一个显示配方名称与描述和图像。 具有更详细视图的那个是导航控制器的一部分,所以点击其中一个项目会将另一个视图推到栈顶。
问题是我有食谱名称的列表,当我点击的时候,我想把这个配方的细节放到导航控制器堆栈上。 这两个视图不在同一个视图层次,所以我不能以正常的方式推动它。
我已经尝试将视图的内容传递到主列表上的方法,但没有做任何事情。
那么,有没有办法在另一组视图中find导航控制器,这样我就可以将视图推到一个视图上了?
如果它可以帮助你,这是一个解决方法,我用来摆脱子视图的一些推送问题。 我使用一个模态赛格,与推animation。
你可以像这样调用它们:[myAnimations modalRight:self destvc:yourDestViewController]。 从yourDestViewController继续:[myAnimations modalLeft:self];
myAnimations.h
#import <Foundation/Foundation.h> @interface myAnimations : NSObject @end
myAnimations.m
#import "myAnimations.h" #import <QuartzCore/QuartzCore.h> @implementation myAnimations +(void) modalRight:(UIViewController*)vc destvc:(UIViewController*)viewCtrl{ CATransition *transition = [CATransition animation]; transition.duration = 0.3; transition.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut]; transition.type = kCATransitionPush;// kCATransitionMoveIn; transition.subtype = kCATransitionFromRight; [vc.view.window.layer addAnimation:transition forKey:nil]; [vc presentModalViewController:viewCtrl animated:NO]; } +(void) modalLeft:(UIViewController*)vc{ CATransition *transition = [CATransition animation]; transition.duration = 0.3; transition.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut]; transition.type = kCATransitionPush; transition.subtype = kCATransitionFromLeft; [vc.view.window.layer addAnimation:transition forKey:nil]; [vc dismissModalViewControllerAnimated:NO]; } @end
更新:现在与IOS 7,这是很好的推animation,上面的方法会使它看起来很奇怪。 如果你想模拟一个viewcotroller,需要推动一些东西(我们称之为pusherVC),将pusherVCembedded到导航控制器中,并呈现模型推进器的导航控制器。 然后,@ pusherVC你可以做self.nafigationcontroller目前…