3

我们如何以编程方式执行 push xcode unwind segue?

我知道简单的方法是使用情节提要并将按钮拉到“退出”,但我打算在退出视图之前先运行一些代码。

4

3 回答 3

5

要回到 rootViewController 使用:

[self.navigationController popToRootViewControllerAnimated:(BOOL)]

或者去一个特定的控制器:

[self.navigationController popToViewController:
    [[self.navigationController viewControllers]
    objectAtIndex:THEINDEXOFTHEVIEWCONTROLLERTOUNWINDTO]
    animated:YES];

有关更多详细信息,请参阅我在这篇文章中的回答: Push to root View controller in UIStoryboard

于 2013-03-07T13:43:52.570 回答
4

如果您只想在退出之前执行一些代码(尽管保持简单,否则您将获得 UI 锁定,直到您返回某些内容),您可以覆盖canPerformUnwindSegueAction:fromViewController:withSender:目标控制器。

可能是这样的:

- (BOOL)canPerformUnwindSegueAction:(SEL)action 
                 fromViewController:(UIViewController *)fromViewController 
                         withSender:(id)sender
{
    // Some operation...

    return YES; // Or NO if something went wrong and you want to abort
}

否则,您实际上可以以编程方式创建 segue 并通过覆盖来管理动画/展开逻辑segueForUnwindingToViewController:fromViewController:identifier:

您可以在此处找到完整的文档

于 2013-03-07T13:29:01.260 回答
1

您可以通过在 UIViewController 中调用此方法在代码中发生转场

- (void)performSegueWithIdentifier:(NSString *)identifier sender:(id)sender

您仍将在故事板中的 2 个视图之间创建转场,只需确保命名转场并在标识符参数中使用准确的名称

于 2013-03-07T13:22:42.023 回答