Выполнить раскрутить Segue программно
В настоящее время у меня есть следующая раскадровка:
UITableViewController
-> Segue
-> UINavigationController
-> Relationship
-> UITableViewController
В последнем UITableViewController я добавил кнопку возврата с кодом ниже:
navigationItem.setLeftBarButtonItem(UIBarButtonItem(title: "Back", style: UIBarButtonItemStyle.Plain, target: self, action: "unwind"), animated: true)
let attributes = [NSFontAttributeName: UIFont.fontAwesomeOfSize(30), NSForegroundColorAttributeName: Constants.InterfaceColors.firstHighlightColor] as Dictionary!
let unwindNavigationItem = navigationItem.leftBarButtonItem! as UIBarButtonItem
unwindNavigationItem.setTitleTextAttributes(attributes, forState: .Normal)
unwindNavigationItem.title = String.fontAwesomeIconWithName(FontAwesome.AngleLeft)
Насколько я читаю, я должен подключить владельца файла к выходу в раскадровке. Я обнаружил, что это возможно только в том случае, если в коде вашего контроллера есть действие, подобное приведенному ниже.
@IBAction func unwindToWeekOverview(segue: UIStoryboardSegue) {
NSLog("unwind to week overview")
dismissViewControllerAnimated(true, completion: nil)
}
Так как я сейчас не знаю, как напрямую связать действие кнопки с моим действием, я добавил unwind
функция.
func unwind() {
performSegueWithIdentifier("UnwindToWeekOverview", sender: self)
}
Когда я теперь нажимаю кнопку "Назад", вызывается функция размотки, но не функция перехода. Что мне не хватает?
1 ответ
Посмотрите на эту ссылку. Это Майк Вельмер, и он объясняет это очень четко.
https://spin.atomicobject.com/2014/10/25/ios-unwind-segues/
Итак, прежде всего, вам нужно создать IBAction в контроллере представления назначения, примерно так:
@IBAction func goBack(segue: UIStoryboardSegue) {
print("go back")
Тогда вам просто нужно подключить (управлять перетаскиванием) от вашей кнопки к выходу выхода. Во всплывающем окне вы увидите добавленную ранее функцию, просто выберите ее, и она должна работать.