このスワップビューコントローラーメソッドがあります。何かが完了ブロックをブロックまたは遅延していることを除いて、正常に動作します。テストのためにアニメーションの長さをゼロに設定しましたが、デバイス (iPhone6+ iOS8.3 64GB) で観察しているのは、メソッド transitionFromViewController:toViewController:duration:options:animations:completion: が呼び出されたが、fromViewController が残っていることです。画面上では、長い遅延 (約 5 秒) があり、完了ブロックが呼び出され、fromViewController が最終的に消えて割り当てが解除されます。fromViewController は現時点では何もしていません。
他の誰かがこの動作を見たことがありますか? または、メイン スレッドがブロックされているかどうかを判断し、ブロックしている人物を特定する良い方法を知っていますか?
ありがとうエド。
-(void)swapFromViewController:(UIViewController *)fromViewController toViewController:(UIViewController *)toViewController
{
if (!toViewController || !fromViewController)
{
NSString *exceptionMessage = [NSString stringWithFormat:@"%s - The 'to' and 'from' view controllers must not be nil.", __PRETTY_FUNCTION__];
@throw ([NSException exceptionWithName:@"Invalid View Controller Segue" reason:exceptionMessage userInfo:nil]);
}
//Sanity check
toViewController.view.alpha = 1.0f;
[fromViewController willMoveToParentViewController:nil];
[self addChildViewController:toViewController];
//Configure the toViewController view before the transistion call.
toViewController.view.frame = self.rootContainerView.bounds;
//Add view to view hierarchy animated
[self transitionFromViewController:fromViewController
toViewController:toViewController
duration:0.0f
options:UIViewAnimationOptionTransitionNone
animations:^{
fromViewController.view.alpha = 0.0f;
}
completion:^(BOOL finished)
{
[self configureConstraintsFromParentView:self.rootContainerView toChildView:toViewController.view withInset:UIEdgeInsetsZero];
//Remove fromViewController from VC hierarchy.
[fromViewController removeFromParentViewController];
//Notify the destination view controller it did move to parent.
[toViewController didMoveToParentViewController:self];
}];
}