Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/qt/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios Swift 3:如何确保在下一个视图控制器中显示之前设置数据_Ios_Swift_Google Maps - Fatal编程技术网

Ios Swift 3:如何确保在下一个视图控制器中显示之前设置数据

Ios Swift 3:如何确保在下一个视图控制器中显示之前设置数据,ios,swift,google-maps,Ios,Swift,Google Maps,我正在使用prepare for segue在另一个视图控制器中设置字典变量。但问题是视图控制器在没有数据的情况下打开地图。如何确保仅在设置字典变量数据后才转到下一个视图控制器 这是我的密码 override func prepare(for segue: UIStoryboardSegue, sender: Any?) { if segue.identifier == "showMapSegue" { if let mapVC = seg

我正在使用prepare for segue在另一个视图控制器中设置字典变量。但问题是视图控制器在没有数据的情况下打开地图。如何确保仅在设置字典变量数据后才转到下一个视图控制器

这是我的密码

override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
        if segue.identifier == "showMapSegue"
        {
            if let mapVC = segue.destination as? MapVC
            {
                if vendorStoreKeys.count != 0{
                    mapVC.vendorStore = vendorStoreKeys
                }
            }
        }
     }

但是,当控制器可见时,下一个视图控制器中的供应商存储阵列仍然为空。它会在一段时间后设置数据,但此时我无法重新加载该视图控制器,因此我需要确保在正确设置mapVC.vendorStore变量之前不会转到下一个视图控制器。

我能够解决此问题。Prepare for应该在调用之前设置数据,并且它是。问题是我实际上忘了删除故事板中的segue,它直接从按钮转到新的视图控制器。这就是我所做的

  • 删除了直接从集合视图单元格按钮转到下一个故事板的segue
  • 创建了从视图控制器顶部到下一个视图控制器的新分段
  • 将那个赛格命名为“showMapSegue”

  • 构建并运行。我在下一个视图控制器中成功获取了数据。希望有帮助。

    我解决了这个问题。Prepare for应该在调用之前设置数据,并且它是。问题是我实际上忘了删除故事板中的segue,它直接从按钮转到新的视图控制器。这就是我所做的

  • 删除了直接从集合视图单元格按钮转到下一个故事板的segue
  • 创建了从视图控制器顶部到下一个视图控制器的新分段
  • 将那个赛格命名为“showMapSegue”

  • 构建并运行。我在下一个视图控制器中成功获取了数据。希望能有所帮助。

    您在MapVC的ViewDiLoad和ViewWillDisplay方法中正在做什么。理想情况下,在调用prepare之前,它永远不会打开屏幕,因此其他东西会延迟您对vendorStore属性的使用yvar vendorStore=Dictionary()这是字典。。。。我只是用这个设定一张地图dictionary@MoazKhan共享目标视图控制器代码。特别是在地图加载数据的地方code@MoazKhan请检查您的segue.identifier=“showMapSegue”是否正确?并检查vendorStoreKeys.count>o。您在MapVC中的ViewDiLoad和ViewWillAspect方法中正在做什么。理想情况下,在调用prepare之前,它永远不会打开屏幕,因此其他东西会延迟您对vendorStore属性的使用yvar vendorStore=Dictionary()这是字典。。。。我只是用这个设定一张地图dictionary@MoazKhan共享目标视图控制器代码。特别是在地图加载数据的地方code@MoazKhan请检查您的segue.identifier=“showMapSegue”是否正确?并查看您的供应商商店密钥。计数>o。