Прехвърляне на 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, за да задам нещо в този изглед без преминаване

ако някой може да редактира въпроса ми, за да бъде по-ясен, ще съм благодарен :)

* АКТУАЛИЗАЦИЯ *

трябва да направя това без segueing, защото може би има повече от един ViewController, който ще се покаже след този модален segue, така че искам да задам, преди да направя каквито и да е segue неща (това е като да зададете делегати между 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 на segue.

var customController =  segue.destinationViewController as YourControllerClass
customController.delegate = self
person Mundi    schedule 31.08.2014
comment
какво, ако има повече от един ViewController след segue и същото, което искам да получа делегата, това е като един изглед ще се покаже модално и след това ще дойде друг изглед и когато вторият изглед бъде отхвърлен, той ще добави редове в този 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
Ако VC е модално отделен, той по дефиниция не е вторият VC на навигационния контролер на първия VC. Това, което се опитвате да направите, е абсурдно. Не трябва да имате тази сложна йерархия на изглед дори за редактиране на най-сложните обекти. Следвайте модела на делегат: накарайте представящия контролер на изгледа да получи готовото съобщение и да го вземе оттам нагоре в йерархията. Това е всичко, което трябва да знаете. - person Mundi; 01.09.2014
comment
знаете ли какво, може би сте прав, че използвате делегати тук, но въпросът ми не беше за делегати, но няма проблем, разбрах това, благодаря за помощта по всякакъв начин - person Amr Mohamed; 01.09.2014
comment
Благодаря, @Amro, нали, не попитахте за делегати, но това все пак е уместна и необходима част от отговора. Късмет! - person Mundi; 02.09.2014