iOS UITableView reloadData仅在第二次调用我的重载函数时刷新表
这是我的重装function
- (void) reloadTable:(id)sender { NSLog(@"Reload Table"); NSLog(@"%@",[appDelegate queryList]); [self.driverTable reloadData]; [self.driverTable setNeedsLayout]; [self.driverTable setNeedsDisplay]; }
这是我从web服务接收数据后调用它的地方
if( [elementName isEqualToString:@"Response"]) { Response = NO; LookupView *lookupView = [[LookupView alloc] initWithNibName:@"LookupView" bundle:nil]; [lookupView reloadTable:self]; }
我现在遇到的问题是在按下查找button并接收数据后进行search。 该表不会刷新新的数据。 如果我再次按查找button再次调用相同的函数,表重新加载。 现在我知道数据在那里,因为我打电话给表重新加载之前打印数组。
任何想法为什么?
我遇到了同样的问题。 根据Apple的文档,reloadData“不应该在插入或删除行的方法中调用”。 我使用的解决方法是延迟对reloadData的调用,以便在更新表之后不会立即执行。 尝试这个:
[self performSelector:@selector(delayedReloadData) withObject:nil afterDelay:0.5];
在适当的地方用下面的delayReloadData实现
-(void)delayedReloadData{ [self.tableView reloadData]; }
我从这种方法中看到的负面影响是,如果表格行可见,则在显示其内容之前有一个短暂的延迟。
我发现你正在通过在你的if loop
看到这个elementName
来进行XMLparsing。 为什么你需要在parsing代码中load a NIB file
? 它有什么用处? 你可以像这样调用你的reloadTable:
方法。
[self reloadTable:self];
你正在使用你的app delegate
文件中的一些数组来填充你的tableView。 那么你是在你的ViewController中初始化你的委托?