CollectionView仅刷新SVPullToRefresh,而不是.reloadData

时间:2014-11-18 20:02:34

标签: ios swift uicollectionview

我在调用URBMediaFocusViewController后尝试重新加载我的collectionView中的数据 无论我尝试什么,我都无法让我的collectionView重新加载。在解雇URB时,我调用了一个自定义类func refreshAfterURB () {}我一直在尝试加载那么多不同的东西来尝试刷新但是没有进展。当我使用println(self.collectionView?)打印我的collectionView时,它返回nil。应该没有理由这样做,所以我尝试使用

完全刷新我的视图控制器
func refreshAfterURB () {
        self.view.setNeedsDisplay()
        self.view.setNeedsLayout()
        self.view.setNeedsUpdateConstraints()
        self.collectionView?.reloadData()
    }

但是这并没有刷新我的collectionView,它甚至没有重新加载我认为的视图,因为它保持了它当前的滚动位置,但之后它将打印collectionView。

我需要能够在此命令中或以这样的方式刷新我的collectionView。

我成功的唯一方法是使用我设置的SVPullToRefresh:

self.collectionView.addPullToRefreshWithActionHandler({
            println(self.collectionView?)
            self.refresh()
        }, position: SVPullToRefreshPosition.Bottom)

知道这些作品我尝试了以下内容,但也没有运气。

    var instanceOfCustomObject: UIScrollView = UIScrollView()
    self.collectionView?.triggerPullToRefresh()

我的CollectionView设置如下:

var collectionView: UICollectionView!

_

func setUpCollection () {

    layout.sectionInset = UIEdgeInsetsMake(2, 2, 2, 2);
    layout.headerHeight = 0;
    layout.footerHeight = 0;
    layout.columnCount = numOfColums
    layout.minimumColumnSpacing = 2;
    layout.minimumInteritemSpacing = 2;
    self.collectionView = UICollectionView(frame: self.view.frame, collectionViewLayout: layout)
    self.collectionView.dataSource = self
    self.collectionView.delegate = self
    self.collectionView.registerClass(UICollectionViewCell.self, forCellWithReuseIdentifier: "Cell")
    self.collectionView.backgroundColor = offWhite
    self.collectionView.frame = CGRectMake(0, 64, screenSize.width, screenSize.height - 64)
    self.view.addSubview(self.collectionView)


    self.collectionView.addPullToRefreshWithActionHandler({
            println(self.collectionView?)
            self.refresh()
        }, position: SVPullToRefreshPosition.Bottom)

}

那么如何在函数中刷新我的collectionView而不必向下滑动以刷新?

我的代码还可以随意提问。

更新:

我添加了几行来查找;

1)在我调用重载数据之前,我打印新的数组计数(60)

2)在cellForItemAtIndexPath中,它只打印(30)数组的计数

更新#2

在阅读plist之前调用了重载数据

1 个答案:

答案 0 :(得分:0)

这一切都归结为它在读取数据之前重新加载数据。就我而言,它就像放

一样简单
self.collectionView?.reloadData()
self.collectionView?.layoutIfNeeded()

readPlist()

的末尾

在这种情况下的任何其他人我建议在几个地方打印出阵列的数量,以确保它在重新加载前正确填充。