2017-04-13 7 views
1

テーブルビューのセルからタブビューコントローラにデータを渡して、タブビューコントローラの対応するビューで使用しようとしています。ただし、以下のオーバーライドされたfunc prepareメソッドは呼び出されておらず、このメソッドを完全にバイパスしてタブビューコントローラーに移動します。UIViewControllerのsegueメソッドの準備が呼び出されていない

Storyboard showing the views

override func prepare(for segue: UIStoryboardSegue, sender: Any?) { 
    let selectedCarIndex = self.savedCarsTableVC.indexPathForSelectedRow?.row 

    let destVC = segue.destination as! TabBarController 
    destVC.selectedCar = savedCars[selectedCarIndex!] 
} 

しかし私はそれがnilだ配列からデータを返すためにselectedCarオブジェクトを期待しています。

+0

Hey @suleee、あなたの質問に直接コードをコピーして貼り付けてください(そしてMarkdownを使用してフォーマットしてください)。あなたは答えの方法が速い人;-) –

答えて

0

tableView didSelectRowメソッドでselectedCarIndexを設定しようとします。また、TabBarControllerにナビゲートして、TabBarに埋め込まれたViewControllerをナビゲートしないようにしてください。

func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: IndexPath) { 
    self.performSegue(withIdentifier: "youridentifier", sender: indexPath) 
} 

override func prepare(for segue: UIStoryboardSegue, sender: Any?) { 
    let selectedCarIndex = sender as! IndexPath 

    let destVC = segue.destination as! TabBarController //Are you sure this is the correct ViewController to be casting to? 
    destVC.selectedCar = savedCars[selectedCarIndex.row] 
} 
+0

私はあなたが正しいかもしれないと思います:彼は間違ったVCクラスにキャストして、その結果としてトランジションをクラッシュさせます:-( –

関連する問題