放松Segue的自定义Segue类

时间:2013-12-04 20:12:21

标签: ios iphone ios6 storyboard segue

可以在“故事板”构建器中单击“标准/前向搜索”,并且可以将样式更改为“自定义”。此时可以指定Segue类。然而,这对于Unwind Segue来说是不可能的。 Unwind Segues仅具有要指定的标识符和操作。它的类型是“Unwind Segue”,但有没有办法为这些Unwind Segues创建自定义Segue类?

2 个答案:

答案 0 :(得分:4)

也许您想查看http://dadabeatnik.wordpress.com/2013/10/13/custom-segues/文章。它非常详细地解释了自定义segue。

答案 1 :(得分:2)

我发现为了实现自定义展开segue,我必须继承UINavigationController并覆盖此方法,如下所示:

-(UIStoryboardSegue *)segueForUnwindingToViewController:(UIViewController *)toViewController fromViewController:(UIViewController *)fromViewController identifier:(NSString *)identifier {
UIViewController *controller = self.topViewController;
UIStoryboardSegue *unwindSegue;

if ([controller isKindOfClass:[YourClassThatNeedsCustomUnwind class]]) {
    unwindSegue = [controller segueForUnwindingToViewController:toViewController fromViewController:fromViewController identifier:identifier];
}

if (unwindSegue) {
    return unwindSegue;
} else {
    return [super segueForUnwindingToViewController:toViewController fromViewController:fromViewController identifier:identifier];
}
}

然后在需要自定义展开segue的UIViewController中覆盖此方法:

 - (UIStoryboardSegue *)segueForUnwindingToViewController:(UIViewController *)toViewController fromViewController:(UIViewController *)fromViewController identifier:(NSString *)identifier {
YourCustomUnwindSegue *segue = [[YourCustomUnwindSegue alloc] initWithIdentifier:identifier source:fromViewController destination:toViewController];
return segue;
 }

最后在您的自定义UIStoryboardSegue类中,只需覆盖“ - (void)perform:”方法,并放置您需要的任何动画(或者在我的情况下缺少动画)。

- (void)perform
{
UINavigationController *containerVC = (UINavigationController*)[self.destinationViewController parentViewController];
[containerVC popToViewController:self.destinationViewController animated:NO];
}

希望这可以帮助别人。