这是我的重装功能
- (void) reloadTable:(id)sender
{
NSLog(@"Reload Table");
NSLog(@"%@",[appDelegate queryList]);
[self.driverTable reloadData];
[self.driverTable setNeedsLayout];
[self.driverTable setNeedsDisplay];
}
这是我从webservice
接收数据后调用的地方if( [elementName isEqualToString:@"Response"]) {
Response = NO;
LookupView *lookupView = [[LookupView alloc] initWithNibName:@"LookupView" bundle:nil];
[lookupView reloadTable:self];
}
我现在遇到的问题是在按下查找按钮并接收数据后进行搜索。该表不会刷新新数据。如果我再次按下查找按钮再次调用相同的功能,表格将重新加载。现在我知道数据存在,因为我在调用表重新加载之前打印出数组。
任何想法为什么?
答案 0 :(得分:6)
我遇到了同样的问题。根据Apple的文档,不应在插入或删除行的方法中调用reloadData。我使用的一种解决方法是将调用延迟到reloadData,以便在更新表之后不会立即调用。试试这个:
[self performSelector:@selector(delayedReloadData) withObject:nil afterDelay:0.5];
在适当的地方,具有以下delayReloadData实现
-(void)delayedReloadData{
[self.tableView reloadData];
}
我从这种方法看到的负面影响是,如果表格行可见,则在显示其内容之前会有短暂的延迟。
答案 1 :(得分:0)
我发现你在elementName
中看到if loop
正在进行XML解析。为什么在解析代码中需要load a NIB file
。有什么用?您可以像这样调用reloadTable:
方法。
[self reloadTable:self];
您正在使用app delegate
文件中的某个数组填充tableView。那么你在ViewController中初始化了你的委托吗?