2012-08-03 61 views
0

我想建立我的自定义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]; 
}]; 

}

回答

8

我想我可以理解你正在尝试做的。如果我错了,请纠正我。你想去一个视图,然后点击返回按钮来回来。正确?用故事板做到这一点很容易。将NavigationController作为您的初始视图,并将导航控制器的根视图控制器设置为主菜单。从那里你要做一个PUSH赛车,然后回去你想做一个POP。

调用push segue是调用segue的正常方式,但流行有点不同。弹出一个视图的代码是:[self.navigationController popViewControllerAnimated:YES];。返回到根视图控制器的代码是:[self.navigationController popToRootViewControllerAnimated:YES];

我相信这是你想要做的。无需定制赛车。

+0

对不起,英语我的第二语言,在这个我是我的IOS冒险的初学者ish阶段的顶部。我对你的回答的问题是:推你是否可以建立没有顶级酒吧。顶栏会摧毁整个效果。是否有可能你可以发布一些代码或链接到一个准备好的例子?我会感激不尽。谢谢。 – 2012-08-03 17:51:52

+0

如果您单击导航控制器添加到故事板并转到它的设置,您可以取消选中显示顶部栏。 – 2012-08-04 00:23:29

+0

工程真的很棒。非常感谢。看起来有时最困难的是最简单的解决方案。 – 2012-08-04 18:04:20