2017-01-30 10 views
0

View Controller間で配列を渡そうとしています。私はなぜ配列が何かを持っていることをかなり確信していますが、まだ反対側に到着したときには空であるようです。エラーはありません...ただ空です。私の受信のViewControllerでView Controller間で配列を渡す

override func prepare(for segue: UIStoryboardSegue, sender: Any?) { 
     if segue.identifier == "segueMapSelection" { 

      if let destinaton = segue.destination as? MapTableChoiceViewController { 
       //destinaton.maps = sender as? [SkiMap] 
       print("size of array before passing it through: ", maps.count) 
       destinaton.maps = self.maps 
      } 
     } 
    } 

    @IBAction func SelectDifferentMapButton(_ sender: Any, forEvent event: UIEvent) { 
      performSegue(withIdentifier: "segueMapSelection", sender: self.maps) 


    } 

は、私がここでやっているものを

var maps : [ObjectTypeHere]! = [] 

任意のアイデアを持っていますか?私はコードを他の方法でコメントしたままにしました。私はそれを試みたときにエラーを出しました。

ありがとうございました。

+1

var maps:[ObjectTypeHere]!あなたの2番目のビューコントローラでこれだけです –

+0

Ok ...そうして、おそらく私に問題を示しています。それは今言う:致命的なエラー:予期せず、オプションの値をアンラッピングしながらnilが見つかりません – user2091936

+0

さて、配列は同じ型ですか?あなたの2番目のビューコントローラ配列はObjectTypeですか?多分あなたは例のためにそれをしましたが、とにかく尋ねています。 –

答えて

1

この問題は、ビューコントローラのライフサイクルにおける一連の問題に関連しています。唯一次いで

  • self.maps源のある時点で収集VC
  • あるセグエを開始し、発生prepare(for segue:)に達し、先にself.mapsを通過するVC
  • 先コントローラ(MapTableChoiceViewControllerを行います

    var maps:[ObjectTypeHere]! 
    
    :)は、として配列を宣言する場合、そのためアレイ

を初期化(再)のviewDidLoadを実行

もちろん、オブジェクトタイプがself.mapsdesignation.mapsの間で同じであると仮定して、配列を正常に渡してください。

イベントシーケンスの完全な定義については、here's詳細な説明を参照してください。

関連する問題