1

このスワップビューコントローラーメソッドがあります。何かが完了ブロックをブロックまたは遅延していることを除いて、正常に動作します。テストのためにアニメーションの長さをゼロに設定しましたが、デバイス (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];
    }];
}

4

0 に答える 0