2013-03-07 4 views
3

Как мы можем программно развернуть xcode разматывать segue?xcode unind segue программно

Я знаю, что простой способ - использовать раскадровку и вытащить кнопку на «выход», но я намерен сделать это, чтобы некоторые коды запускались сначала до выхода из вида.

+1

Po дублирующий код [Как выполнять разматывание программно?] (https://stackoverflow.com/questions/12509422/how-to-perform-unwind-segue-programmatically) –

ответ

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

1

Вы можете иметь SEGUE происходит в коде вызова этого метода в UIViewController

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

Вы еще создать SEGUE в раскадровке между 2 видами, просто убедитесь, что вы назвали SEGUE и использовать точное имя в параметре идентификатора

+0

Лучший ответ. Проще всего, используя разматывающие сегменты! –

+1

Но тогда вы не подталкиваете презентацию VC к стеку, а не удаляете текущий и имея предыдущий экземпляр представляющего VC, попадаете в верхнюю часть стека? –

4

Если вы просто хотите выполнить какой-либо код перед выходом (хотя сохраните его просто, иначе вы получите блокировку пользовательского интерфейса до тех пор, пока не вернете что-то), вы можете переопределить 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

Смежные вопросы