当UITableView停止滚动时,如何获得回调?

时间:2013-01-15 17:28:29

标签: iphone objective-c ipad

在我的iPhone应用程序中,我有一堆代码在单个方法中运行。在方法结束时,我有几行需要延迟,所以它们只能在之前运行,这是因为有动画正在进行我需要在动画完成时运行此代码。

我知道我可以使用NSTimer,但我想尝试一些更优雅或更清洁的东西。

3 个答案:

答案 0 :(得分:0)

您可以使用第一个过程:

– performSelector:onThread:withObject:waitUntilDone:

这将阻止你的线程,直到完成该过程。

在此之后,您的下一个语句将开始执行。

答案 1 :(得分:0)

标准(非常方便)的iOS方式是回调块。考虑一个简单的UI动画:

[UIView animateWithDuration:1
                 animations:^{
                   myView.alpha = 1; // fade-in myView
                 }
                 completion:^(BOOL finished){
                     // this code gets called when the animations block above is finished
                 }];

您可以实现自己的方法,将完成块作为参数,并在执行结束时调用它。这是应该让你开始的Apple's block tutorial

答案 2 :(得分:0)

如果您在动画结束后仍需要延迟,则可以使用以下命令调用第二个进程:

[self performSelector:<#(SEL)#> withObject:<#(id)#> afterDelay:<#(NSTimeInterval)#>]