objective-c - UIViewController dismissViewControllerAnimated 完成参数类型语法

标签 objective-c uiviewcontroller ios5

UIViewController 方法实现的 'completion' 参数类型的 void (^)(void) 语法:

- (void)dismissViewControllerAnimated: (BOOL)flag completion: (void (^)(void))completion

激起了我的好奇心,但我一直找不到它的任何文档。请有人帮忙解释一下它的用途/含义吗?

非常感谢。

最佳答案

这是我书中关于 block 的讨论:

http://www.apeth.com/iOSBook/ch03.html#_blocks

那里有一个例子,但这里有一个更接近你所问问题的例子:

[self transitionFromViewController:fromvc
                  toViewController:tovc
                          duration:0.4
                           options:UIViewAnimationOptionTransitionFlipFromLeft
                        animations:nil
                        completion:^(BOOL done){
                            [tovc didMoveToParentViewController:self];
                            [fromvc removeFromParentViewController];
                        }];

完成 block 有一个参数,一个名为“done”的 bool 值,但它的代码不使用这个参数。这个想法是执行动画,然后运行完成 block 中的代码。

适应积木非常重要,因为它们是 future 的方式。例如,iOS 4 中的 View 动画使用它们,如我的书的“基于 block 的 View 动画”部分所述(首先阅读旧方法,然后阅读新的 iOS 4 方法):

http://www.apeth.com/iOSBook/ch17.html#_view_animation

在 iOS 5 中 block 更加重要;它们不是可选的情况越来越多。

block 也是使用 GCD(grand central dispatch)的方式,这无疑是执行多线程的最佳方式。

关于objective-c - UIViewController dismissViewControllerAnimated 完成参数类型语法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8021593/

相关文章:

ios - 可以[self.window makeKeyAndVisible];在设置 rootviewcontroller 之前被调用

ios - 在 iOS 上检测传入的 NotificationCenter 通知

objective-c - 如果没有其他窗口打开,则重新打开窗口。麦可、 cocoa

ios - 如何比较数组中的三个对象?

ios - UIView 拆分过渡

ios - 呈现模态视图 Controller 时隐藏 UIViewController

ios - 如何设置全局样式?

ios - 从 xcode Storyboard中可视化修改 UIToolbar

ios - 在模拟器中滑动时,UISwipeGestureRecognizer 不会发送到 IBAction 方法

ios - 无法在 UITableViewCell 中缩放图像