2016-04-22 2 views
0

В настоящее время у меня есть кнопка, предназначенная для перехода в TableViewController, но решила, что хочу встроить этот TableViewController в TabBarController. Я пытаюсь передать его в UITabBarController.Значение типа 'UIViewController' не имеет имени пользователя jsonfile 'по имени JSON

override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) { 
    if (segue.identifier == "showListSegue") { 
     let tabBarController = segue.destinationViewController as! UITabBarController 
     tabBarController.selectedIndex = 0 // choose which tab is selected 
     let des = tabBarController.selectedViewController! 
     des.jsonfile = self.jsonfile 
    } 
} 

В последней строке кода, des.jsonfile = self.jsonfile, я получаю сообщение об ошибке ...

Значение типа 'UIViewController' не имеет ни один из членов '' jsonfile

Я пытаясь передать jsonfile в TableViewController, который теперь встроен в UITabBarController. Как это может быть сделано? У меня есть эта переменная в TableViewController, которая уже прошла, но теперь, когда я бросил этот TabBarController в микс, я все запутался.

Я также попытался создать файл Cocoa для TabBarcontroller и установить переменную var jsonfile : JSON!, но это тоже не сработало. (Это переменная в моем TableViewController, которую я хочу передать) Пожалуйста, помогите. Спасибо.

+1

Вы должны бросить 'UIViewController' файл' TableViewController', а затем получить доступ к 'jsonfile' собственности оттуда. – rmaddy

+0

Могу ли я увидеть пример? –

+0

Просто измените UITabBarController на имя класса вашего ViewController. Убедитесь, что он построен (cmd + b) – Emptyless

ответ

1

Вы должны сообщить компилятору, что selectedViewController является типом с элементом jsonFile. Кроме того, вы должны проверить, что он действительно существует и правильный класс во время выполнения. Вот вид шаблона вы должны использовать:

class JSONDisplayController: UIViewController { 
    var jsonfile: String 
} 

func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) { 
    if (segue.identifier == "showListSegue") { 
     guard let tabBarController = segue.destinationViewController as? UITabBarController else { 
      preconditionFailure("Unexpected destination.") 
     } 

     tabBarController.selectedIndex = 0 // choose which tab is selected 
     guard let des = tabBarController.selectedViewController as? JSONDisplayController else { 
      preconditionFailure("Unexpected selection.") 
     } 

     des.jsonfile = jsonfile 
    } 
} 
Смежные вопросы