iOS 9 UICollectionView水平重载数据不起作用

时间:2016-01-02 16:41:42

标签: ios swift uicollectionview

注意:ios开发中的新手。

我刚刚使用垂直滚动创建了一个集合视图,它在动态添加新单元格时有效,但当我将滚动更改为horizontal时,它不起作用。我设法通过在主线程上重新加载数据来修复它。

我的问题是:

  1. 为什么我在使用垂直滚动时不需要显式重新加载主线程上的数据?
  2. 最佳做法是在viewWillAppear中重新加载数据/重新加载特定的单元格或部分数据吗?
  3. 有人遇到过这个问题吗?使用XCode 7 iPhone 6和iPhone 6s(所有这些都是iOS9)测试。

    我重新加载数据的代码(用于测试)在viewWillAppear

    override func viewWillAppear(animated: Bool) {
      super.viewWillAppear(animated)
      myViewModel.reload() // Reload the data with fresh data
      collectionView.reloadData()
    }
    

    在另一个场景中,我显示一个输入和一个按钮,当按下该按钮时,它会将记录追加到内存中的数组(静态)

    @IBAction func create() {
      myViewModel.create(someInput.text!).persist() // Append to an array in memory (just for testing)
      navigationController?.popViewControllerAnimated(true)
    }
    

1 个答案:

答案 0 :(得分:0)

reloadData()必须在主线程中执行:

override func viewWillAppear(_ animated: Bool) {
    DispatchQueue.main.async(execute: {
        self.collectionView.reloadData()
    })
}