構文が間違っていると思いますが、ブロックが初めてなので、これを理解できないようです。私はこのカスタムメソッドを持っています:
-(void)animateViewConstraintChange: (void(^)(void))completionHandler;
このメソッドは次のようになります。
-(void)animateViewConstraintChange:(void(^)(void))completionHandler
{
[[self view]setNeedsUpdateConstraints];
[UIView animateWithDuration:0.6
animations:^{
[[self view]layoutIfNeeded];
} completion:^(BOOL finished){
completionHandler;
}];
}
コンパイルして実行しますが、このメソッドを呼び出して実際に completionHandler に何かを入れると、そのコードは呼び出されません。
[self animateViewConstraintChange:^{
[orderedViewControllers removeObject:[self middleViewController]];
[[[self middleViewController] view] removeFromSuperview];
[[self middleViewController] removeFromParentViewController];
_middleViewController = nil;
[[self view]setNeedsUpdateConstraints];
}];
したがって、上記のコードの場合、animateViewConstraintChange が呼び出されますが、ブロック内のコードは呼び出されません。
また、コンパイラは animateViewConstraintChange メソッドでエラーを出しています
completionHandler;
「式結果未使用」とのこと。
ご覧いただきありがとうございます。