Приведите viewController, который модально переходит в tabBar[1] в UINavigationController[1]

скажем, у меня есть UINavigationController на TabBar.viewController[1] вроде ->

let nav:UINavigationController = self.tabBarController.viewControllers[0] as UINavigationController

и UITableViewController на NavigationController.viewController[1] вроде ->`

let mvc = nav.viewControllers[0] as UITableViewController

что, если в этой таблице есть модальный переход, как привести этот сегментированный viewController, чтобы установить что-то в этом представлении без перехода

если кто-нибудь может отредактировать мой вопрос, чтобы быть более ясным, это будет оценено :)

* ОБНОВЛЕНИЕ *

мне нужно сделать это без перехода, потому что, возможно, после этого модального перехода появится более одного ViewController, поэтому я хочу установить, прежде чем делать какие-либо действия перехода (это похоже на установку делегатов между tabBar viewControllers, поэтому мы приводим без перехода к другому ViewController в TabBar)

может быть что-то вроде этого

let nav = self.tabBarController.viewControllers[1] as UINavigationController
let mvc = nav.viewControllers[1] as UITableViewController // but compiler crash `Array index out of range`
let something else to hold that ViewController from the nav

person Amr Mohamed    schedule 31.08.2014    source источник


Ответы (1)


Вы просто используете свойство перехода destinationViewController.

var customController =  segue.destinationViewController as YourControllerClass
customController.delegate = self
person Mundi    schedule 31.08.2014
comment
что, если после перехода есть более одного ViewController, и то же самое я хочу получить делегатом, это похоже на то, что одно представление будет отображаться модально, а затем появится другое представление, и когда второе представление будет отклонено, оно добавит строки в этот tableView поэтому я предпочитаю не использовать делегата и не использовать его. У вас есть идея сделать это? - person Amr Mohamed; 31.08.2014
comment
Нет, вам следует использовать шаблон делегата. Это другой вопрос, поэтому вы должны сначала принять этот ответ. - person Mundi; 31.08.2014
comment
я не думаю, что это ответ, но посмотрите мой обновленный вопрос, и если вы можете помочь, это было бы круто, и в любом случае спасибо - person Amr Mohamed; 31.08.2014
comment
Ваш сбой связан с тем, что вы пытаетесь получить доступ ко второму контроллеру представления, когда есть только один. Вместо этого используйте topViewController. - person Mundi; 31.08.2014
comment
я знаю, но я хотел получить вид, который находится после topViewController, который, как я думал, будет модально разделенным viewController - person Amr Mohamed; 31.08.2014
comment
Если виртуальный канал разделен модально, он по определению не является вторым виртуальным каналом навигационного контроллера первого виртуального канала. То, что вы пытаетесь сделать, абсурдно. У вас не должно быть такой сложной иерархии представлений даже для редактирования самых сложных объектов. Следуйте шаблону делегирования: пусть контроллер представления представления получит готовое сообщение и перенесет его оттуда вверх по иерархии. Это все, что вам нужно знать. - person Mundi; 01.09.2014
comment
знаете что, возможно, вы правы в использовании делегатов здесь, но мой вопрос был не о делегатах, но нет проблем, я понял, спасибо за помощь в любом случае - person Amr Mohamed; 01.09.2014
comment
Спасибо @Amro, верно, вы не спрашивали о делегатах, но это все еще актуальная и необходимая часть ответа. Удачи! - person Mundi; 02.09.2014