在UITableView上延迟reloadData

时间:2010-12-01 20:32:26

标签: iphone objective-c uitableview uiview reloaddata

我有一个UITableView。在点击按钮我要显​​示我的自定义视图,然后,一旦视图可见,从tableview中删除特定项目。自定义视图隐藏了tableview,因此我希望在新视图可见后进行删除。

目前,我有这个,它添加自定义视图,然后应该删除该项,并重新加载表,但重新加载正在动画结束时发生(我有一个动画块,更改视图alpha),所以我可以看到更新。

[self.view addSubview:customView];
[itemArray removeObject:object];
[self.tableView reloadData];

如何在视图可见之前延迟重新加载?

感谢。

3 个答案:

答案 0 :(得分:3)

尝试将reloadData添加到viewDidAppear

-(void) viewDidAppear:(BOOL)animated {
    [super viewDidAppear:animated];
    [self.tableView reloadData];
}

这应该给你所需的延迟。

答案 1 :(得分:1)

或者您可以使用performSelector方法:

[self performSelector:@selector(myOtherMethod) withObject:nil afterDelay:1.5];

答案 2 :(得分:1)

你提到你自己动画了这个观点;您应该在动画完成时使用以下内容调用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];
}];