2015-07-10 4 views
-2

Я пытаюсь передать переменные из контроллера представления в другой. Во-первых, есть экран подключения. Когда информация проверяется, я передаю имя пользователя и другие данные во всю программу (у которой есть контроллер панели вкладок).Не удалось передать значение типа UITabBarController в FirstViewController (xCode 6.4)

Вот код. Я использую Xcode 6.4. В предыдущей версии страница откроется, но переменные не пройдут. Теперь это просто дает мне ошибку выше.

override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) { 
     if (segue.identifier == "lienConnecte") { 
      let nav = segue.destinationViewController as! UITabBarController // this line was just an attempt to find a solution 
      let vueFil = segue.destinationViewController as! FirstViewController 

      vueFil.utilisateur = utilisateur 
     } 
    } 

Конечно, я знаю, что в раскадровке, то SEGUE указывает на контроллер панели вкладок (потому что мне нужно это потом), но я хочу, чтобы значения, которые будут переданы в FirstControllerView

Найдено решение для тех, кто увидит этот пост:

let tabBarController = segue.destinationViewController as! UITabBarController 
let vueFil = tabBarController.viewControllers![0] as! FirstViewController 

ответ

0

Вы не можете превратить одно в другое, как какой-то фокусник, говоря as. Вы должны получить ссылку на действительный вещь, за которой вы находитесь. Если есть контроллер FirstViewController, который является одним из контроллеров дочерних элементов UITabBarController, сначала получите ссылку на UITabBarController (который вы уже знаете, как это сделать), а затем получите его свойство viewControllers - это его дети, и вы можете, оттуда, получите тот, который вы хотите по его номеру индекса.

0

Ваш контроллер представления таблиц - это контроллер представления контейнеров, который имеет дочерние контроллеры. Предположительно, FirstViewController является одним из этих контроллеров детского вида. Поэтому ваш контроллер представления таблиц и ваш FirstViewController - это разные экземпляры. Вы можете получить доступ к детям панели вкладок с viewControllers в собственности:

let firstVC = tabVC.viewControllers?.first 
// firstVC should be your FirstViewController 
+0

это не работает ... 'пусть нав = segue.destinationViewController, как! UITabBarController let vueFil: AnyObject? = nav.viewControllers? .first' – DRV

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