2015-11-17 7 views
0

Я видел несколько вопросов, задающих этот вопрос, но ответы не кажутся окончательными. Используя XCode 7 с iOS 9, я хочу расслабиться от контроллера представления главного меню с произвольного числа контроллеров детского представления. Я ожидал что-то вроде следующего, чтобы делать то, что мне нужно:Perfom show segue in a unind segue

@IBAction func returnToMenuScreen(segue: UIStoryboardSegue) { 
    let departureController = segue.sourceViewController 
    if departureController.title == "ChildViewController" { 
     print("ChildViewController") 
     self.performSegueWithIdentifier("NewSegue", sender: departureController) 
    } 
} 

Функция печати называется, но performSegueWithIdentifier нет. Подобные вопросы, похоже, указывают на проблему с синхронизацией, но мне не повезло.

Подводя итог, как можно перемещаться между дочерними контроллерами представления родительского контроллера? Я хочу расслабиться от родителя, затем перейдите к произвольному контроллеру детского представления. Любая помощь приветствуется!

ответ

1

Я попытался понять вас, но ваши данные не подходят для решения проблемы. Может быть, вы неправильно подключили функцию размотки. S o лучше следовать некоторым учебным пособиям о разворачивании segues. Вот ссылка яблока, в которой рассказывается о разматывании segue. Внизу этой ссылки. Затем вы можете узнать, как правильно разматывать segue. надеюсь, что эта ссылка поможет найти вашу проблему.

https://developer.apple.com/library/prerelease/ios/referencelibrary/GettingStarted/DevelopiOSAppsSwift/Lesson8.html

**** обновление ****

Попробуйте это решение: -

@IBAction func unwindToMainMenu(segue: UIStoryboardSegue) { 
dispatch_after(1, dispatch_get_main_queue()) {() -> Void in 
    self.performSegueWithIdentifier("viewController", sender: self) 
} 
} 

или вы можете ввести переменную для обработки Segue в viewWillAppear.

PUT

var show = false // IN UNWIND VIEW CONTROLLER 

Смените fromCamera = правда, в prepareForSegue

override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) { 
    if segue.identifier == "showDetails" { 
     let MainViewController = segue.destinationViewController as? JobInformationViewController 
     MainViewController!.show= true 
    } 
} 

И использовать как этот

override func viewDidAppear(animated: Bool) { 
    if show { 
     self.performSegueWithIdentifier("categorySelection", sender: self) 
     self.show= false 
    } 
}  
+0

разматывать Segue правильно функционирует, но я до сих пор не найдены адекватное решение для программного перебора после размотки. Я хочу перемещаться между контроллерами дочерних представлений, сначала отматывая их на главный контроллер представлений, чтобы свести к минимуму стек представления. – torple

+0

Обновлен мой ответ, посмотрите! :) –

+0

Спасибо за ответ. Я видел ответ, который вы предоставили раньше, но мы решили не идти по этому маршруту. На данный момент мы решили упростить и использовать навигационный контроллер. Однако, похоже, что я хочу сделать, должно быть довольно распространенное действие. Является ли ваш вышеприведенный ответ единственным способом навигации между контроллерами детского вида? – torple

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