在xcode中创建自定义segue

时间:2013-09-09 11:07:28

标签: iphone ios objective-c segue

我正在尝试在xcode故事板中使用自定义segue让视图向下滑动(与封面垂直相反)。

我了解到我需要打电话:

[self dismissViewControllerAnimated:YES completion:nil];

但我在哪里以及如何做到这一点?这应该在.h文件中吗?然后这会创建一个转换,然后我可以在选择转换时从下拉菜单中选择吗?

我是新手,所以我认为我需要一步一步的指导。提前谢谢!

4 个答案:

答案 0 :(得分:2)

假设您有一个后退按钮,您可以在其中转到上一个视图控制器。在按钮操作方法中,您必须编写以下代码行

-(IBAction)Back{
[self dismissViewControllerAnimated:NO completion:nil];
}

对于动画,在要为其设置动画的类中编写此方法

- (void)fadeIn
{
     self.view.transform = CGAffineTransformMakeScale(1.3, 1.3);
     self.view.alpha = 0;
    [UIView animateWithDuration:.35 animations:^{
    self.view.alpha = 1.0;
    self.view.transform = CGAffineTransformMakeScale(1, 1);
}];

}

从该类的ViewWillAppear方法中调用此方法为:

-(void)viewWillAppear:(BOOL)animated{

[self fadeIn];
}

对于高级动画,请检查:https://github.com/JosephLin/TransitionTest

答案 1 :(得分:2)

您不需要自定义segue - 当您希望屏幕关闭时(假设您按下按钮时),只需在您想要关闭的视图控制器中实现此功能。

-(IBAction)closeScreen:(id)sender{
    [self dismissViewControllerAnimated:YES completion:NULL];
}

您将在.m文件中调用它。

答案 2 :(得分:0)

您不需要自定义segue仅用于覆盖垂直过渡。

如果你在storyboard中设置一个模态转换就足够了(在你的按钮和目标viewcontroller之间使用ctrl + drag)。然后单击segue线并在检查器(右上角)中更改从默认到覆盖垂直的过渡。

@你的目标视图控制器你从想要关闭视图的按钮创建一个ibaction(通过ctrl +从你的按钮拖动到.m文件)。然后你将消除线添加到这个ibaction。

答案 3 :(得分:0)

称为unwind segue的东西是完美的。想象一下FooViewController呈现BarViewController。你在故事板中都有。在FooViewController.h中定义方法- (IBAction)onCloseBarController:(UIStoryboardSegue *)segue;并在FooViewController.m中添加一个空实现

- (IBAction)onCloseBarController:(UIStoryboardSegue *)segue
{
}

现在,转到故事板并在BarViewController视图中找到要用于触发关闭操作的控件。单击该控件,在右侧检查器中转到触发段(最右侧选项)并从action(在UIBarButtonItem}或Sent Events的情况下拖动(在这种情况下) UIButton}对于故事板中BarViewController底部的退出控件。然后它应该显示所有可用的展开段,只需选择onCloseBarController

Unwind segues是专门为此而制作的。最好的部分 - 您不必手动关闭控制器,unwind segue会自动执行此操作。因此,您只需使用方法onCloseBarController作为解雇的通知方法。

关于展开segues的非常好的教程:http://pragmaticstudio.com/blog/2013/2/5/unwind-segues