为啥UITableView不能reloadData
Posted
技术标签:
【中文标题】为啥UITableView不能reloadData【英文标题】:Why UITableView can't be reloadData为什么UITableView不能reloadData 【发布时间】:2011-10-19 07:56:35 【问题描述】: -(void) reload
[self.tableViewa reloadData];
-(void) viewWillAppear:(BOOL)animated
[self.tableViewa reloadData];
[cachedProperties setTags:nil];
self.tabBarController.navigationItem.rightBarButtonItem =nil;
self.tabBarController.navigationItem.leftBarButtonItem =nil;
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
return [[cachedProperties getTags] count];
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
static NSString *CheckMarkCellIdentifier = @"CheckMarkCellIdentifier";
UITableViewCell * cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CheckMarkCellIdentifier] autorelease];
NSUInteger row = [indexPath row];
if([[[cachedProperties getTags] objectAtIndex:row] isNotEmpty])
cell.textLabel.text = [[cachedProperties getTags]objectAtIndex:row];
cell.accessoryType= UITableViewCellAccessoryDetailDisclosureButton;
return cell;
使用此方法,当 viewWillAppear 有一个代码 [self.tableviewa reloadData] 并会调用 numberOfRowsInSection,但是当我调用具有 [self.tableviewa reloadData] 的方法 Reload 时,不会调用函数 numberOfRowInSection.. 如何是真的吗?这个问题有什么原因吗?
因为在第一次调用 viewWillAppear 时,[cachedProperties setTags:nil] 将设置标签并将调用 -(void) reload
[self.tableViewa reloadData];
或 [thatClass.tableViewa reloadData] 我需要使 tableView 不为空。为什么tableView没有reloadData?
【问题讨论】:
numberOfSectionsInTableView:
方法呢?您是否检查过它返回的值不是0
?
【参考方案1】:
试试这个:
-(void) reload
[self.tableViewa reloadData];
[cachedProperties setTags:nil];
-(void) viewWillAppear:(BOOL)animated
[self reload];
self.tabBarController.navigationItem.rightBarButtonItem =nil;
self.tabBarController.navigationItem.leftBarButtonItem =nil;
...
【讨论】:
以上是关于为啥UITableView不能reloadData的主要内容,如果未能解决你的问题,请参考以下文章
为啥 UITableView contentOffset 在 tableview reloadData 期间变化很大,而不是保持不变? reloadData 后如何使其保持不变?
UITableView reloadData() 不能快速工作?