我有两个表格视图。一个显示项目列表,比如食谱名称。另一个显示带有描述和图像的配方名称。具有更详细视图的那个是导航控制器的一部分,因此点击其中一个项目会在堆栈顶部推送另一个视图。
问题是我只有配方名称的列表,当点击时我想将配方细节推送到导航控制器堆栈。这两个视图不在同一视图层次结构中,因此我不能以正常方式推送它。
我已经尝试将要推送到堆栈的视图的内容传递到主列表中的方法,但是没有做任何事情。
那么,有没有办法在另一组视图中找到导航控制器,这样我就可以将视图推到它上面了?
答案 0 :(得分:0)
如果它对您有所帮助,这里有一个解决方法,我曾经从子视图中解除一些推送问题。我使用模态segue,推动画。
您可以将它们称为:[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并且它是很好的推动动画,上面的方法会让它看起来很奇怪。如果你想以模态方式呈现一个需要推送东西的viewcotroller(让我们称之为pusherVC),将pusherVC嵌入导航控制器中,并将推模的导航控制器呈现给模态。然后,@ pusherVC你可以做self.nafigationcontroller目前......