2017-02-11 11 views
0

TableViewControllerに次のようなセグがあり、各テーブルの行にはFruitオブジェクトがあります。各行のオブジェクトをビューコントローラに渡してオブジェクトの行の詳細を表示したいので、View Controller全体でFruitオブジェクトを転送するために下のセグを書きました。 FruitDescriptionViewControllerストーリーボードを通じてオブジェクトを渡すSegue

、私はそれは私が変数var chosenFruit = Fruitを定義し、セグエに、私はエラーを得ることはできませんので、行からオブジェクトを取る変数を定義する方法を見つけ出すことができませんでしたcannot pass type Fruit to type Fruit.type

Fruitオブジェクトをsegue経由で渡して、FruitDescriptionViewControllerのFruit変数に格納する方法を教えてください。

override func prepare(for segue: UIStoryboardSegue, sender: Any?) { 
     if segue.identifier == "FruitDetails" { 
      if let indexPath = tableView.indexPathForSelectedRow { 
       var fruit = fruits[indexPath.row] 
       let controller = segue.destination as? FruitDescriptionViewController 
       controller?.chosenFruit = Fruit(name: fruit.name, url: fruit.url, fruitArray: fruit.fruitArray) 
      } 
     } 

    } 
+1

'var selectedFruit = Fruit'は' var selectedFruit:Fruit? 'になるはずです – Callam

答えて

3

あなたがしようとしているのは正しいです、オブジェクトを次のviewControllerに設定することができます。

ここでの問題はセグエについてではありませんが、FruitDescriptionViewControllerにあると思います。あなたがここでやっていることは、変数chosenFruitにタイプのフルーツを保存している

var chosenFruit = Fruit 

:あなたはこのように設定された変数を持っています。そのため、あなたがFruitタイプのインスタンスをselectedFruitに設定しようとすると、cannot pass type Fruit to type Fruit.typeと表示されます。変数にはFruitタイプのタイプがあり、インスタンスを設定しようとしています。あなたの代わりに何をすべき

は、次のようchoseFruit変数を設定します

var chosenFruit: Fruit? //or var chosenFruit: Fruit! if its necessary 

この方法では、VARの種類が正しいだろう。

+0

それは働いた!ありがとうございました! – ch1maera

関連する問題