2013-03-07 74 views
3

我们如何以编程方式执行xcode展开segue?xcode以编程方式展开segue

我知道简单的方法是使用故事板并将按钮拉到'退出',但我打算做的是在退出视图之前先运行一些代码。

+1

Po可以复制[如何以编程方式执行Unwind segue?](https://stackoverflow.com/questions/12509422/how-to-perform-unwind-segue-programmatically) – 2017-12-05 14:51:14

回答

5

要返回到RootViewController的使用:

[self.navigationController popToRootViewControllerAnimated:(BOOL)] 

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

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

对于更多的细节,请参见我在这篇文章中的回答: Push to root View controller in UIStoryboard

+0

感谢您的回答! – dan 2013-03-07 14:03:11

1

你可以有一个赛格瑞通过调用UIViewController中这种方法

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

你仍然在2次之间的故事板创建SEGUE出现在代码中,只要确保你的名字和赛格瑞使用在标识符参数

+0

最佳答案。最简单的,而实际上使用unwind segues! – 2014-07-24 13:33:15

+1

但是,你是不是将推送的VC推入堆栈,而不是移除当前的VC,并让呈现的VC的前一个实例进入堆栈的顶部? – 2014-12-11 17:39:03

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:管理动画/开卷逻辑。

您可以找到complete documentation here

相关问题