1

对于 TableView 中的每个单元格,我基本上都有一个布尔变量,用于存储是否正在为该单元格加载数据。因此,点击一个单元格会导致附件类型更改为 UIActivityIndi​​cator。TableView 加载正常,但是当我弹回 TableView 时,随机的一两个单元格没有默认的 DisclosureIndicator ......它什么也没有

我正在使用的代码在里面cellForRowAtIndexPath

 NSLog([entry isLoading] ? @"Yes" : @"No");
if ([entry isLoading]) {
    UIActivityIndicatorView *activityView =
    [[UIActivityIndicatorView alloc] initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleGray];
    [activityView startAnimating];
    [cell setAccessoryView:activityView];
}
else{
    [cell setAccessoryType:UITableViewCellAccessoryDisclosureIndicator];
}

我已经逐步完成了代码,并且未显示 DisclosureIndicator 的单元格仍在运行将其设置为 AccessoryDisclosureIndicator 的代码...我不确定发生了什么,因为缺少指示符的单元格正在触发 else 语句导致这setAccessoryType

谢谢!

4

1 回答 1

1

尝试这个,

if ([entry isLoading]) {
    UIActivityIndicatorView *activityView =
    [[UIActivityIndicatorView alloc] initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleGray];
    [activityView startAnimating];
    [cell setAccessoryView:activityView];
    [cell setAccessoryType:UITableViewCellAccessoryNone];
}
else{
    [cell setAccessoryView:nil];
    [cell setAccessoryType:UITableViewCellAccessoryDisclosureIndicator];
}

根据文档

accessoryView
如果此属性的值不为 nil,则 UITableViewCell 类将给定视图用于 table view 的正常(默认)状态下的辅助视图;它忽略了附件类型属性的值。提供的附件视图可以是框架提供的控件或标签或自定义视图。附件视图出现在单元格的右侧。

所以你需要设置accessoryView为 nil show theaccessoryType否则它会忽略它。

于 2013-01-03T19:04:00.350 回答