我正在编写一个使用AFNetworking框架执行HTTP请求的应用程序,收到的数据会被解析,然后放入表格视图
我创建了一个带有加载程序的特殊单元格,它显示了正在处理的请求。此单元格只有.xib文件,没有自定义类。 我在此单元格中添加了活动指示符,并选中了选项" Animating"在属性检查器中。
我也创建了BOOL ivar来显示这个单元格。
BOOL isLoading;
以下是"搜索"点击按钮:
- (void)searchBarSearchButtonClicked:(UISearchBar *)searchBar{
if ([searchBar.text length] > 0){
isLoading = YES;
[self.tableView reloadData];
searchResults = [NSMutableArray arrayWithCapacity:10];
NSURL *url = [self urlWithSearchText:searchBar.text];
NSURLRequest *request = [NSURLRequest requestWithURL:url];
AFJSONRequestOperation *operation = [AFJSONRequestOperation
JSONRequestOperationWithRequest:request
success:^(NSURLRequest *request, NSHTTPURLResponse *response, id JSON) {
[self parseDictionary:JSON];
[searchResults sortUsingSelector:@selector(compareName:)];
isLoading = NO;
[self.tableView reloadData];
}
failure:^(NSURLRequest *request, NSHTTPURLResponse *response, NSError *error, id JSON){
[self showNetworkError];
isLoading = NO;
[self.tableView reloadData];
}];
[queue addOperation:operation];
}
}
这就是我如何获得那个细胞
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
if (isLoading) {
return [tableView dequeueReusableCellWithIdentifier:LoadingCellIdentifier];
}
/*other code */
}
当我执行我的第一次搜索时,此单元格显示动画指示器并且一切正常,但所有其他时间此单元格显示的指示符不会旋转,这就是问题所在。为什么会这样?如何让它在所有其他时间旋转?
的屏幕截图答案 0 :(得分:2)
停止动画并隐藏单元格时,不会取消分配。这意味着下次加载单元格时,它将采用与隐藏单元格时相同的状态。加载单元格后,您需要调用[activityView startAnimating];
。
答案 1 :(得分:0)
一旦尝试这样,在tableView willDisplayCell:方法中隐藏你的警报,而不是在JSONRequestOperationWithRequest之后:如下所示的成功方法,
-(void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath {
//hide your alert,i think in your case isLoading = NO to hide alert so,
isLoading = NO;
}
希望它会帮助你......