2014-10-23 6 views
0

Мне нужно обновить переменную в контроллере представления, и мне нужно сделать это с помощью контроллера панели вкладок.Swift - обновить переменную внутри представления Контроллер из контроллера панели вкладок

См изображение ниже: enter image description here

Я попытался так много другого кода, но, так как я реализовал Навигационный контроллер между ними, ни один из них не работает.

Code1

let myVC:MyViewController = self.viewControllers?[0] as MyViewController 
myVC.x = "marco" 

Кодекса2

var storyboard : UIStoryboard = UIStoryboard(name: "Main", bundle: nil) 
var myVC:MyViewController = storyboard.instantiateViewControllerWithIdentifier("view2") as MyViewController 
myVC.x = "marco" 

Code3

let myInstance:MyViewController = MyViewController() 
myInstance.x = "marco" 

Но ни один из них не работает. Помогите пожалуйста

Большое спасибо

+1

Посмотрите на свою структуру. Что такое контроллер корневого представления на первой вкладке? – rdelmar

+0

Спасибо, я исправил его – MeV

ответ

2

Вы должны следовать вид иерархии контроллера от контроллера панели вкладок до пользовательского контроллера представления, как это:

Tab бар контроллер (самостоятельная) -> контроллер навигации -> пользовательский контроллер просмотра

Мы хотим получить контроллер первого контроллера контроллера панели (контроллер навигации), а затем получить этот контроллер навигационного контроллера контроллер первого взгляда. В коде, вы можете сделать это следующим образом:

let myVC = (self.viewControllers?[0] as UINavigationController).viewControllers[0] as MyViewController 
myVC.x = "marco" 

Обратите внимание, что это хрупкое, и потерпит неудачу, если изменить иерархию на всех.

+0

Фантастический! оно работает!! Я заметил, что это действительно хрупкое, но это единственный способ сделать это правильно? Большое спасибо! – MeV

+0

У меня такая же проблема в другом сценарии. Не могли бы вы мне помочь? http://stackoverflow.com/questions/26533449/swift-update-a-variable-in-a-tableviewcontroller – MeV

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