在视图控制器之间传递数组

时间:2017-01-30 00:27:20

标签: arrays swift swift3

尝试在视图控制器之间传递数组。我不确定为什么非常确定数组中有一些东西,当它到达另一侧时它似乎是空的。没有错误......只是空的。

 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)


     }

在我收到的ViewController上,我有一个

var maps : [ObjectTypeHere]! = []

知道我在这做什么吗?我把代码留下了我试过的另一种方式。当我尝试它时出错了。

感谢您的帮助。

1 个答案:

答案 0 :(得分:1)

该问题与视图控制器生命周期中的事物序列有关。

  • self.maps在源VC中的某个点收集
  • segue开始,到达prepare(for segue:),将self.maps传递到目标VC
  • 然后目标控制器(MapTableChoiceViewController)执行viewDidLoad,其中(重新)初始化数组

因此,如果将数组声明为:

var maps:[ObjectTypeHere]!

您应该已成功传递数组 - 当然,假设self.mapsdesignation.maps之间的对象类型相同。

有关事件序列的完整定义,here's详细说明。