Cocoa touch 更改可见视图后,UITableViewCell的accessoryView将消失

Cocoa touch 更改可见视图后,UITableViewCell的accessoryView将消失,cocoa-touch,ios4,uitableview,uiactivityindicatorview,Cocoa Touch,Ios4,Uitableview,Uiactivityindicatorview,我正在经历这种奇怪的情况。我有一个UITableView,当用户选择一个单元格时,一个长的(网络)过程开始。因此,我在后台线程中执行了此操作,并(在didSelectRowAtIndexPath中)放置了一个UIActivityIndicatorView作为附件视图。这是我写的: UITableViewCell* cell = [self.tableView cellForRowAtIndexPath:indexPath]; UIActivityIndicatorView* activityVi

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

UITableViewCell* cell = [self.tableView cellForRowAtIndexPath:indexPath];
UIActivityIndicatorView* activityView = [[UIActivityIndicatorView alloc] initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleWhite];
cell.accessoryView = activityView;
[activityView startAnimating];
[activityView release];
一切似乎都正常工作,但如果在加载过程中(当指示器设置动画时),我使用UIAbbar切换视图,当我返回UITableView时,应该仍然存在的UIActivityIndicatorView已消失。知道我做错了什么吗?谢谢

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

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


当从另一个选项卡视图返回到表视图时,
cellforrowatinexpath:
消息不是真的,所以我“删除”了上面的答案。

我正在回顾这个问题,并且。。。现在看完问题,我笑了:-)
我自己的问题的答案是:代码没有问题,它工作得很好。。。但是将UIActivityIndicator视图设置为白色。。。在白色背景下很难看到它:-D:-D发布的代码是正确的。

此外,如果您正在重用单元格(您应该这样做),那么请确保在cellForRowAtIndexPath:中明确设置每个单元格的附件视图,以便,例如,具有“活动指示器”视图的单元格不会被未使用的单元格重用(但现在将显示一个)。如果我正确理解了您的答案,那么问题应该是我在不重新设置UIActivityIndicatorView的情况下重新创建了单元格,而UIActivityIndicatorView随后将丢失。这是否正确?我不能假设将其放置在那里一次,它将永远留在那里,因为有时会从重复使用的单元格重新创建该单元格。问题是,在我切换回后对于选项卡,我看不到任何活动指示器,但我甚至看不到任何新单元格的新请求…因此,这应该是旧的。我是对的吗?或者可能我误解了正在发生的事情?谢谢!尝试在
cellForRowAtIndexPath:
上设置断点,看看当您切换回带有表视图的选项卡时是否碰到了该断点。如果您这样做了,请你需要确保你用这种方法将附件视图设置为活动指示器。如果你没有点击它,那么它是另一个东西。没关系!我的答案是错误的。这是我认为发生的事情,但在你的评论之后,我尝试了它,而不是它。它似乎与UIActivityIndicator有关。阅读这篇文章让我感到非常沮丧mb,很高兴我不是唯一一个发生在lol身上的人。