所以我决定尝试使用StoryBoarding构建iPhone应用程序。 我有一个基本的基于选项卡的应用程序设置,相当快。使用自定义序列转换时,TabBar会丢失。如何恢复?
作为具有两个选项卡的初始View控制器的TabBar控制器。 在每个标签上添加更多视图作为内容。
在一个选项卡上,我有导航控制器只有几个视图。 在这里我没有任何问题。我可以使用自定义按钮和导航栏来回移动。 TabBar也始终在它通过视图的所有移动的地方。
然后我得到第二个标签。 没有导航控制器, ,因为在第二个选项卡上我需要使用自定义seques在视图之间创建自定义过渡动画。到目前为止,seques,动画和转换都没有问题(至少我几乎得到了我需要的动画:))。 但是我被卡住的是TabBar。 只要我按任何按钮,将导航到另一个视图使用自定义seque我失去了我的TabBar。即使我回到初始视图,也没有TabBar了。
我读过一些关于弹出视图堆栈中的tabbar控制器的信息,但是我能找到的所有示例都不适用于我。
如果有人遇到类似的事情,请分享解决方案。任何指向一些很好的教程或示例将非常感激。
编辑: 所以我自定义塞克看起来是这样的:
我“(无效)执行”看起来是这样的: (至少从源动画为预期目标,这是错误的唯一的事,是的TabBar被隐藏或开除)
#import "XCustomSeque.h"
#import <QuartzCore/QuartzCore.h>
@implementation XCustomSeque
@synthesize appDelegate=_appDelegate;
-(void) perform{
UIViewController *srcViewController = (UIViewController *) self.sourceViewController;
UIViewController *destViewController = (UIViewController *) self.destinationViewController;
self.appDelegate = [[UIApplication sharedApplication] delegate];
CATransition* trans = [CATransition animation];
[trans setType:kCATransitionMoveIn];
[trans setFillMode:kCAFillModeBoth];
[trans setDuration:1];
[trans setSubtype:kCATransitionFromLeft];
CALayer *layer = destViewController.view.layer;
[srcViewController.view removeFromSuperview];
[self.appDelegate.window addSubview:destViewController.view];
[layer addAnimation:trans forKey:nil];
self.appDelegate.window.rootViewController=destViewController;
}
@end
在第二个选项卡中,我认为您使用的是“Modal”segue(而不是seque)。这意味着您将在现有视图层次结构(包括选项卡栏)上打开模态全屏视图,并且当您“导航回”(我认为您已创建另一个模态轮廓)时,将打开另一模态全屏视图。 “导航回”的正确方法是调用[self dismissModalViewControllerAnimated:YES]。 – hoshi 2012-02-06 01:06:59
不,它不是第二个选项卡中的“Modal”序列。使用Modal时,不能使用Custom seque和自定义动画。 – tigukargas 2012-02-06 05:41:31
好吧,我尝试了所有不同的seque类型。 1)Push 2)Modal 3)Custom |唯一不隐藏TabBar的是第一个 - 推。这个seque的坏处是它不可能(我没有找到任何办法)在这里为转换应用任何自定义动画。所以推动是毫无疑问的。 – tigukargas 2012-02-06 07:48:59