求教一个有关UITableView在scrolling的状态下Cell的更新问题。

2013-04-10 21:36:50 +08:00
 Ace
具体问题是这样的:
在UITableView的Cell中有一个UIButton,按下之后的效果是发送一个请求到服务器,然后在请求的发送过程中,UIButton会替换成一个UIActivityIndicator, 这个请求结束后,根据结果改变UIButton的颜色。
但是在实现的过程中,如果点击之后,当此时的UIButton是Indicator的时候用户开始滑动(或者说手指开始触控)TableView的话,即使请求结束Cell也不会主动更新到新的UIButton,除非手指停止滑动(或者说手指离开屏幕)。
有人遇到过相同的情况吗?
3796 次点击
所在节点    iDev
11 条回复
clowwindy
2013-04-10 21:52:13 +08:00
UIKit 就是这么设计的,实时响应用户操作是最高优先级,其它事件统统在后面排队。
chmlai
2013-04-10 21:59:20 +08:00
没有代码;
请求结束后, `reloadRowsAtIndexPaths:`
wdxz5586
2013-04-11 12:15:03 +08:00
Ace
2013-04-11 14:45:35 +08:00
@clowwindy 谢谢回复,但是我看到过有的App实现了scrolling状态下cell的更新。
Ace
2013-04-11 14:46:26 +08:00
@chmlai 谢谢回复,即使调用reloadRowsAtIndexPaths:也是在停止滑动的时候才更新view。
Ace
2013-04-11 14:46:44 +08:00
@wdxz5586 这个好像只是针对Timer的吧?
alexrezit
2013-04-11 15:38:38 +08:00
@Ace
关键词: run loop.
tab
2013-04-11 20:15:09 +08:00
@Ace 考虑把更新UI的操作放到子线程吧,不过这可能会引发一些问题,因此不建议这样做。苹果推荐的是你滚动时不进行UI更新,从用户体验上讲,实时更新有可能会影响滚动流畅性。不过有很大的优化空间,如果追求卓越可以好好优化一下,某些微博应用在这方面做得不错。
alexrezit
2013-04-11 20:19:06 +08:00
@tab
UIKit 只能只能只能只能只能只能只能在 main thread 好咩? 就是 run loop 的问题.
tab
2013-04-11 20:41:34 +08:00
@alexrezit If you want more fluently, you must do something without UIKit.
clowwindy
2013-04-11 21:00:08 +08:00
楼主贴代码吧。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/65523

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX