2016-04-20 2 views
0

В настоящее время у меня есть кнопка, предназначенная для перехода в TableViewController, но решила, что хочу встроить этот TableViewController в TabBarController. Хорошо, прежде чем я сделал это, у меня был этот бит кода в предыдущем ViewController.prepareForSegue destination TableViewController

override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) { 
    if(segue.identifier == "showListSegue"){ 
     let des = segue.destinationViewController as! TableViewController 
     des.jsonfile = self.jsonfile 
    } 
} 

Теперь, когда я пытаюсь нажать кнопку, он дает мне эту ошибку.

Не удалось бросить значение типа 'UITabBarController' (0x111c818b0) в 'Forkit.TableViewController' (0x10d1b1490).

Я попытался следующий код без успеха, поскольку это дает мне эту ошибку

Значение типа «UITabBarController» не имеет ни одного члена 'jsonfile.

let des = segue.destinationViewController as! TableViewController 

Как я могу обойти это?

+0

Вы должны сделать переход к точке в 'TableViewController' вместо' UITabBarController'? – Zhao

ответ

-4

Try This

@IBAction func about(sender: AnyObject) { 
     performSegueWithIdentifier("about", sender: sender) 
} 
2

Segue showListSegue теперь имеет свой TabBarController, как это destinationViewController. Вот почему он не может отдать его TableViewController, потому что это не тот, который вы ищете. TabBarController действительно содержит ссылку на ViewController, который вы хотите. Вы, вероятно, есть два варианта:

1: Использование .viewControllers и найти свой вид там, как это:

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

В каком [0] выбирает, какие вкладки ViewController вам нужно.

2: Выберите вкладку правой и использовать .selectedViewController

let tabBarController = segue.destinationViewController as! UITabBarController 
tabBarController.selectedIndex = 0 // choose which tab is selected 
let des = tabBarController.selectedViewController! 

Пожалуйста, обратите внимание, что вы работаете с дополнительными значениями здесь, так что либо быть абсолютно уверены, что вы можете смело разворачивать, или строить в проверках (литье с as? и if let заявлениями и т. д.).

Дополнительная информация: UITabBarController Class Reference

+0

Как мне передать des.jsonfile = self.jsonfile к тому же? Я получаю эту ошибку. Значение типа 'UIViewController' не имеет члена jsonfile –

+0

Я пытаюсь сделать это с помощью TableViewController –

+0

В этом случае вам придется набирать текст: 'let des = tabBarController.viewControllers! [0] as! TableViewController' – Oscar

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