我有两个表格视图。一个显示项目列表,例如食谱名称。另一个显示带有描述和图像的食谱名称。具有更详细视图的视图是导航控制器的一部分,因此点击其中一个项目会将另一个视图推送到堆栈顶部。
问题是我只有配方名称的列表,当点击时我想将该配方详细信息推送到导航控制器堆栈。这两个视图不在同一个视图层次结构中,所以我不能以正常方式推送它。
我尝试将要推送到堆栈的视图的内容传递到主列表上的方法中,但这并没有做任何事情。
那么,有没有办法在另一组视图中访问导航控制器,以便我可以将视图推送到它上面?
我有两个表格视图。一个显示项目列表,例如食谱名称。另一个显示带有描述和图像的食谱名称。具有更详细视图的视图是导航控制器的一部分,因此点击其中一个项目会将另一个视图推送到堆栈顶部。
问题是我只有配方名称的列表,当点击时我想将该配方详细信息推送到导航控制器堆栈。这两个视图不在同一个视图层次结构中,所以我不能以正常方式推送它。
我尝试将要推送到堆栈的视图的内容传递到主列表上的方法中,但这并没有做任何事情。
那么,有没有办法在另一组视图中访问导航控制器,以便我可以将视图推送到它上面?
如果它对您有帮助,这是我用来摆脱子视图中的一些推送问题的解决方法。我使用带有推送动画的模态转场。
你可以这样称呼它们:[myAnimations modalRight:self destvc:yourDestViewController]。继续,从 yourDestViewController: [myAnimations modalLeft:self];
我的动画.h
#import <Foundation/Foundation.h>
@interface myAnimations : NSObject
@end
我的动画.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 并且它的推送动画很好,上面的方法会让它看起来很奇怪。如果您想以模态方式呈现需要推送某些东西的视图控制器(我们称之为 pusherVC),请将 pusherVC 嵌入导航控制器中,并以模态方式呈现推送器的导航控制器。然后,@ pusherVC 你可以做 self.nafigationcontroller present ...