我正在通过更改数据源来交换在我的集合视图中显示的数据。这是作为选项卡式界面的一部分完成的。当新数据加载时,我想闪烁滚动指示器以告诉用户在视口之外还有更多数据。
立即地
立即这样做不起作用,因为集合视图尚未加载数据:
collectionView.dataSource = dataSource2;
[collectionView flashScrollIndicators]; // dataSource2 isn't loaded yet
dispatch_async
稍后调度flashScrollIndicators
呼叫也不起作用:
collectionView.dataSource = dataSource2;
dispatch_async(dispatch_get_main_queue(), ^{
[collectionView flashScrollIndicators]; // dataSource2 still isn't loaded
});
performSelector:withObject:afterDelay:
在定时延迟后执行flashScrollIndicators
确实有效(我在 SO 的其他地方看到它),但会导致显示滚动指示器时出现一些滞后。我可以减少延迟,但似乎它只会导致竞争条件:
collectionView.dataSource = dataSource2;
[collectionView performSelector:@selector(flashScrollIndicators) withObject:nil afterDelay:0.5];
一旦集合视图接收到新数据并调整了内容视图的大小,我是否可以连接到回调以闪烁滚动指示器?