2

我正在经历这种奇怪的情况。我有一个 UITableView,当用户选择一个单元格时,一个漫长的(网络)过程开始了。因此,我在后台线程中执行此操作,并放置(在 didSelectRowAtIndexPath 中)一个 UIActivityIndi​​catorView 作为附件视图。这是我写的:

UITableViewCell* cell = [self.tableView cellForRowAtIndexPath:indexPath];
UIActivityIndicatorView* activityView = [[UIActivityIndicatorView alloc] initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleWhite];
cell.accessoryView = activityView;
[activityView startAnimating];
[activityView release];

一切似乎都正常工作,除了,如果在加载过程中(当指示器动画时),我使用 UITabBar 切换视图,当我回到 UITableView 时,应该仍然存在的 UIActivityIndi​​catorView 消失了。知道我做错了什么吗?谢谢!

4

2 回答 2

2

我回顾了这个问题,并且......在阅读了这个问题之后,我笑了:-) 我自己的问题的答案是:代码没有问题,它工作得很好......但是制作 UIActivityIndi​​catorView白色...很难在白色背景上看到它:-D :-D 发布的代码是正确的。

于 2011-02-20T23:35:01.567 回答
1

当您在转到另一个选项卡后返回表格视图时,会向cellForRowAtIndexPath:表格视图控制器发送消息以显示表格的单元格,但在方法中将活动指示器视图设置为单元格的附属视图didSelectRowAtIndexPath:。因此,本质上,您在选择单元格时更改了单元格(即显示活动指示器视图),但是当您离开视图并返回时,该cellForRowAtIndexPath:方法用于重新显示单元格(因此,没有活动指示器视图)。

您必须跟踪哪些单元格当前具有活动指示器视图,并确保在cellForRowAtIndexPath:方法中使用 UIActivityIndi​​catorView 设置这些单元格的附属视图。显然,如果与单元格关联的活动已完成,则不要显示该单元格的活动指示器视图,因此您必须跟踪活动是否已完成。有很多方法可以做到这一点,因此您必须决定哪种方法最适合您的情况。

cellForRowAtIndexPath:从另一个选项卡视图返回到表格视图时(至少必须)发送消息是不正确的,所以我在上面“删除”了我的答案。

于 2011-01-09T23:51:18.713 回答