【发布时间】:2013-06-12 16:52:24
【问题描述】:
我正在通过更改数据源来换出我的集合视图中显示的数据。这是作为选项卡式界面的一部分完成的。当新数据加载时,我想闪烁滚动指示器以告诉用户在视口之外还有更多数据。
立即
立即这样做不起作用,因为集合视图尚未加载数据:
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];
当集合视图接收到新数据并调整内容视图的大小时,我是否可以连接到回调以闪烁滚动指示器?
【问题讨论】:
-
您是否尝试在设置新数据源之后和发送
flashScrollIndicators之前调用[collectionView reloadData]? -
您或许可以尝试使用块like this 重新加载数据并在完成时调用
flashScrollIndicators。 -
在
flashScrollIndicators之前立即调用reloadData也不起作用,正如zvjerka24 所述。 -
您说调用
-flashScrollIndicators在使用performSelector:withObject:afterDelay:时确实有效,但它有点滞后。您是否尝试过延迟为 0?延迟为 0 仍然会稍微延迟消息。 -
那也行不通
标签: ios uicollectionview