2016-07-28 9 views
0

別のビューコントローラに渡す情報を取得しようとしています。私はセグーを行い、何も表示されていません。私は情報を整理するために外部クラスを使用しています。しかし、なぜそれが機能していないのか分かりません。スウィフト、通過した情報が表示されない

最初のビューコントローラ:

override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) { 

    if segue.identifier == "toLocationVC" { 

     let lVC = segue.destinationViewController as! LocationViewController 

     lVC.locationImage?.image = locations[locationSelection].image; 
     lVC.nameLabel?.text = locations[locationSelection].name; 
     lVC.descriptionTextView?.text = locations[locationSelection].desc; 

    } 

第2のビュー:

var selectedLocation : Location?; 


override func viewDidLoad() { 
    super.viewDidLoad() 
    // Do any additional setup after loading the view. 

    locationImage.image = selectedLocation!.image 
    nameLabel.text = selectedLocation!.name 
    descriptionTextView.text = selectedLocation!.desc 

} 

、これはクラス場所である:私の周りのコードの一部を変更しようとした

class Location { 

var image : UIImage 
var name : String 
private var description : String 

var desc : String { 
    return description + "\n\n\nThis Description and Images Provided by http://www.travel.usnews.com" 
} 

init(name : String, image : UIImage, description: String) { 
    self.name = name; 
    self.image = image; 
    self.description = description; 
    } 
} 

、何も動作していないようです。

+0

なぜコードを 'didReceiveMemoryWarning'の中に入れますか? – Christian

+0

オハイオ州私の悪い、私はここでそれを間違って書いた..内部はviewdidload – art3mis

+0

それは動作しません..それは最初のビューからの情報が渡されていないようです – art3mis

答えて

0

明らかに、prepareForSegue()に設定した情報を、2番目のView ControllerのviewDidLoad()メソッドでオーバーライドします。

ちょうどあなたのviewDidLoad()から次のコードを削除し、(これは実際には正しいセグエであり、すべてのデータが設定されている場合)、それは作業する必要があります。

locationImage.image = selectedLocation!.image 
nameLabel.text = selectedLocation!.name 
descriptionTextView.text = selectedLocation!.desc 

(そして、私はselectedLocationnilあるという感じを持ってviewDidLoad()に(=設定されていない))

+0

私のselectedLocationはないと言っています – art3mis

+0

あなたは 'viewDidLoad()'ですか? – Mischa

+0

私はやったが、まだ動作しません – art3mis

0

を次のように私はセグエを書き換えることになる:。

override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) { 
    if segue.identifier == "toLocationVC" { 
     if let lVC = segue.destinationViewController as? LocationViewController { 
      lVC.selectedLocation = locations[locationSelection] 
     } 
    } 

そして設定if let lVC = segue...{ブロック内のブレークポイントが実行されたかどうかを確認します。コードをステップ実行し、デバッガでpo {variable name here}コマンドを使用して各変数を調べます。

Mischaが提案したように、viewDidLoad()関数で何も設定しないでください。その割り当てを削除してください。

この回答が役に立たない場合は、コードリストを更新して詳細情報を追加する必要があります。これらの変数の多くがどこで宣言されているか、または2番目のビューが正しいクラスであるかは正確にはわかりません。

関連する問題