在 UITableView 上延迟 reloadData
Posted
技术标签:
【中文标题】在 UITableView 上延迟 reloadData【英文标题】:Delay reloadData on UITableView 【发布时间】:2010-12-01 20:32:25 【问题描述】:我有一个 UITableView。点击一个按钮,我想显示我的自定义视图,然后,一旦视图可见,从 tableview 中删除特定项目。自定义视图隐藏了 tableview,所以我希望在这个新视图可见后进行删除。
目前,我有这个,它添加了自定义视图,然后应该删除该项目,并重新加载表格,但是在动画结束时重新加载(我有一个动画块,更改视图 alpha),所以我可以看到更新。
[self.view addSubview:customView];
[itemArray removeObject:object];
[self.tableView reloadData];
如何才能延迟重新加载,直到视图可见?
谢谢。
【问题讨论】:
【参考方案1】:尝试将 reloadData 添加到viewDidAppear
:
-(void) viewDidAppear:(BOOL)animated
[super viewDidAppear:animated];
[self.tableView reloadData];
这应该会给你所需的延迟。
【讨论】:
【参考方案2】:您提到您自己正在为视图设置动画;当动画完成时,您应该调用reloadData
,方法是:
[UIView setAnimationDelegate:self];
[UIView setAnimationDidStopSelector:@selector(methodThatCallsReloadData)];
// or even
[UIView setAnimationDelegate:self.tableView];
[UIView setAnimationDidStopSelector:@selector(reloadData)];
或者如果您使用的是基于块的 API:
[UIView animateWithDuration:... completion:^(BOOL finished)
[self.tableView reloadData];
];
【讨论】:
谢谢这很好用。我更喜欢 blocks API,但由于它只有 4.0+,我的 3.2 用户会崩溃【参考方案3】:或者你可以使用 performSelector 方法:
[self performSelector:@selector(myOtherMethod) withObject:nil afterDelay:1.5];
【讨论】:
以上是关于在 UITableView 上延迟 reloadData的主要内容,如果未能解决你的问题,请参考以下文章
iOS:在 reloadData 时保持 UITableView 在同一位置