2013-04-14 5 views
2

Есть ли способ вернуть одну кнопку к определенному контроллеру? Например, предположим, что у меня есть ViewController A и B. Оба модально переходят к ViewController C. Теперь я понимаю, как отменить восстановление до одного из предыдущих контроллеров представления (As was explained here), но как я могу вернуться к конкретному контроллеру представления, который представил VC C ?Segue Отвяжите назад последний последний контроллер View

Так что, чтобы подвести итог, то, что я пытаюсь выяснить, это ... Если вы отделились от C, я хочу расслабиться до A, когда выбрана кнопка. Если B отделился от C, я хочу расслабиться до B, когда выбрана кнопка.

ответ

3

Вы должны использовать стандартный способ возврата из модального сегмента. Поместите это в вашей кнопки «назад» ...

[[self presentingViewController] dismissViewControllerAnimated:YES]; 

Это не использует раскадровку или SEGUE для возвращения, просто код.

+0

Или в Swift: 'self.presentingViewController! .dismissViewControllerAnimated (true, completion: nil)' –

0

Вы можете использовать свойство title title presentController для управления процессом разматывания с помощью требуемого исходного ViewController. Это решение также позволит вам передавать данные с ViewController С до ViewControllers А и В.

1) Нажмите кнопку View Controller (желтая) в верхней части видеоряда холста ViewController А.

2) В инспекторе атрибутов (раздел «Вид контроллера») дайте ViewController A заголовок.

3) Включить следующий код в ViewController A:

@IBAction func returned(segue: UIStoryboardSegue) { 
    // Don't need any code here 
} 

4) Повторите шаги 1, 2 и 3 для ViewController Б.

5) переопределить функцию prepareForSegue в ViewController C следующим образом:

override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) { 
    if self.presentingViewController!.title! == "ViewControllerATitle" { 
     let destination = segue.destinationViewController as! ViewControllerA 
     destination.someFunction(someArgument) 
    } 
    else if self.presentingViewController!.title! == "ViewControllerBTitle" { 
     let destination = segue.destinationViewController as! ViewControllerB 
     destination.someFunction(someArgument) 
    } 
} 
Смежные вопросы