我想建立我的自定义segue,行为类似于标准推塞格,但在我的情况下,我想使用自定义按钮来切换屏幕(没有选项卡栏将适合此应用程序,任何模态赛格也不好)。主屏幕是自定义图形,屏幕可以继续显示为地图。用户选择地图上的点,点击完成,并返回主屏幕及其坐标。 我想连接ViewControllers与自定义segue。自定义segue推后像按钮
我在互联网上研究了很多解决方案,发现了一个可以适用的解决方案,但代码遍布ViewControllers和AppDelegate(我不确定Apple是否会接受它)。我试图把整个代码放到CustomSegue.m/h。成功是部分原因,因为使用技术(下)它继续了第二个ViewControler,但我无法弄清楚如何消除第二个并返回到主屏幕。我尝试了各种技术,但是当我运行它时,编译器会终止带有一堆错误的应用程序。在构建和运行之前,无论是错误还是警告。我也尝试用[self dismissModalViewControllerAnimated:YES]按钮解雇它;或[self dismissViewControllerAnimated:YES completion:nil];他们工作时,我尝试模态赛格但与我的代码结果不好。
有没有人有这样一个整洁的方式的建议。在过去的几天里,我一直在解决这个问题。我看到很多应用程序都在进行转换,所以它似乎是相当流行,简单的解决方案。我对Xcode只有几个月没有太多经验。 这是我的自定义segue(与QuartzCore动画)。
#import "CustomTabBarSegue.h"
@implementation CustomTabBarSegue
-(void)perform {
UIViewController *src = (UIViewController*)[self sourceViewController];
UIViewController *dst = (UIViewController*)[self destinationViewController];
UIView *currentView = src.view;
UIView *theWindow = [currentView superview];
UIView *newView = dst.view;
[theWindow addSubview:newView];
CATransition *transition = [CATransition animation];
transition.delegate = self;
transition.duration = 1;
transition.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut];
transition.type = kCATransitionMoveIn;
transition.subtype = kCATransitionFromRight;
[[theWindow layer] addAnimation:transition forKey:@"MySegue"];
}
@end
下面是从目标VC返回的按钮代码。 (不工作)
- (IBAction)dismiss:(id)sender
{
[self dismissViewControllerAnimated:YES completion:^() {
[self performSegueWithIdentifier:@"MySegue" sender:self];
}];
}
对不起,英语我的第二语言,在这个我是我的IOS冒险的初学者ish阶段的顶部。我对你的回答的问题是:推你是否可以建立没有顶级酒吧。顶栏会摧毁整个效果。是否有可能你可以发布一些代码或链接到一个准备好的例子?我会感激不尽。谢谢。 – 2012-08-03 17:51:52
如果您单击导航控制器添加到故事板并转到它的设置,您可以取消选中显示顶部栏。 – 2012-08-04 00:23:29
工程真的很棒。非常感谢。看起来有时最困难的是最简单的解决方案。 – 2012-08-04 18:04:20