0

我有两个表格视图。一个显示项目列表,例如食谱名称。另一个显示带有描述和图像的食谱名称。具有更详细视图的视图是导航控制器的一部分,因此点击其中一个项目会将另一个视图推送到堆栈顶部。

问题是我只有配方名称的列表,当点击时我想将该配方详细信息推送到导航控制器堆栈。这两个视图不在同一个视图层次结构中,所以我不能以正常方式推送它。

我尝试将要推送到堆栈的视图的内容传递到主列表上的方法中,但这并没有做任何事情。

那么,有没有办法在另一组视图中访问导航控制器,以便我可以将视图推送到它上面?

4

1 回答 1

0

如果它对您有帮助,这是我用来摆脱子视图中的一些推送问题的解决方法。我使用带有推送动画的模态转场。

你可以这样称呼它们:[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 ...

于 2013-09-09T08:26:09.083 回答