为什么在重新加载UITableView后不会删除微调器

时间:2014-02-07 16:12:31

标签: ios uitableview uiactivityindicatorview

我从viewWillAppear直接填充核心数据的tableview。我还添加了一个UIActivityIndi​​cator来创建和动画。获取数据并对其进行排序后,我调用stopAnimating。但是旋转器没有被移除。

以下是相关代码:

-(void)sort{
    NSSortDescriptor *sortDescriptor;
    sortDescriptor = [[[NSSortDescriptor alloc] initWithKey:@"distance" ascending:YES] autorelease];
    NSArray *sortDescriptors = [NSArray arrayWithObject:sortDescriptor];
    NSArray *sortedArray;
    sortedArray = [self.annotationsToSort sortedArrayUsingDescriptors:sortDescriptors];
    self.annotationsToSort = [(NSArray*)sortedArray mutableCopy];

    //[self.tableView reloadData];
    [self.tableView performSelector:@selector(reloadData) withObject:nil afterDelay:2.5];
}

- (void)reloadData {
    [self.tableView reloadData];

    //set activity bar #UPDATETOIPAD
    [spinner stopAnimating];
}

出现微调器,但不会被移除。

tableview的生命周期是这样的:

  1. viewDidLoad创建微调器并将其添加到self.view
  2. viewWillAppear调用loadRecordsFromCoreData
  3. loadRecordsFromCoreData获取并检查返回到数组的数据是否为= 0,如果是,则显示alert,否则,调度到主队列populateLocationsToSort。
  4. populateLocationsToSort做了一些工作并调用了sort。
  5. sort执行您在上面看到的内容,然后重新加载数据。

1 个答案:

答案 0 :(得分:0)

您在排序后调用以下代码:

[self.tableView performSelector:@selector(reloadData) withObject:nil afterDelay:2.5];

您正在self.tableView上执行reloadData而不是self(在tableView上调用reloadData +隐藏微调器)

尝试致电

[self performSelector:@selector(reloadData) withObject:nil afterDelay:2.5];

并确保您的微调器隐藏时,将搜索属性设置为YES