Я пытаюсь получить контроллер View View для запуска нового контроллера View, но я не могу его получить, программно или с помощью раскадровки segues.Нажмите новый контроллер просмотра из пункта назначения Контроллер вида (быстрый)
Вот что я пытаюсь сделать:
У меня есть 3 Вид контроллеров (назовем их A, B и C). Все три были созданы (спроектированы?) В раскадровке. Я начинаю на контроллере просмотра A, и когда пользователь нажимает кнопку, я хочу представить контроллер представления B по модулю, а затем, когда пользователь выбирает ячейку в контроллере B просмотра, я хочу, чтобы контроллер просмотра B был отклонен (модально), и Я хочу, чтобы контроллер просмотра A нажал новый контроллер вида (контроллер C).
Способ, которым я пытался реализовать это до сих пор, - это когда пользователь нажимает кнопку в виде контроллера A, я программно модно нажимаю контроллер просмотра B, а затем, когда пользователь выбирает ячейку в виде контроллера B, я перехожу назад для просмотра контроллера, и попытаться подтолкнуть вид контроллера C из функции prepareForSegue View Controller Б так:
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
if let viewA = segue.destinationViewController as? ViewControllerA {
let cell = sender as! ViewControllerBTableViewCell
var viewC = storyboard?.instantiateViewControllerWithIdentifier("viewControllerC") as! ViewControllerC
viewC.IDToDisplay = cell.userID
viewA.navigationController?.pushViewController(viewC, animated: true)
self.dismissViewControllerAnimated(true, completion: nil)
}
}
Однако, когда я запускаю этот ... вид контроллер C никогда не толкнул!
Причина, по которой мне нужно нажать контроллер просмотра C из контроллера A, заключается в том, что мне нужно, чтобы пользователь мог вернуться назад, чтобы просмотреть контроллер A из контроллера просмотра C, используя кнопку «назад» ... не вернуться к просмотру контроллер B из контроллера вида C.
По существу поток, который я пытаюсь создать, представляет собой вид A -> вид B в виде мода -> вид C ---> назад, чтобы просмотреть A, как если бы вид B исчез (потому что он должен). Обратите внимание, однако, что вид B действительно нужно, чтобы иметь возможность установить значение вида C IDToDisplay
перед тем вид выталкивает для просмотра C.
Есть чистый (стандартный) способ осуществить это? Или мне придется разворачиваться?
Спасибо, ответ! Опция делегата выглядит как стандартный подход ... единственная проблема заключается в том, что когда я ее реализовал, когда я вызываю функцию делегата от контроллера B, диспетчер просмотра B отбрасывается, но ничего не происходит. Когда я пишу оператор print в функции делегата в контроллере A, он никогда не печатается. Есть ли причина, по которой функция делегата не срабатывает при вызове в контроллере B? – SwiftHacker
Понял, что функция не стреляла в контроллер управления A, потому что диспетчер представлений A никогда не был установлен в качестве делегата для контроллера вида B (oops, не знал, что я должен был это сделать). Установка контроллера представления A в качестве делегата для контроллера B просмотра, когда я создаю контроллер B представления и представляю, что он исправил проблему. – SwiftHacker
Я рад, что он решил вашу проблему, если она решит проблему, вы можете проверить ответ. – Klinkert0728