0

即時通訊嘗試實現一個自定義轉換樣式淡入新的Viewcontroller通過使用自定義segue和實現segue類。 我幾乎設法實現這一點,但每次我運行該應用程序,我得到的警告/錯誤:自定義UIViewController通過使用自定義segue類TransitionTo

「非平衡調用開始/結束外觀轉換」。

儘管應用程序一直運行得很好,但在動畫過程中有一點閃爍。

這裏是我的代碼:

@implementation BlurredFadeSague 

- (void)perform{ 

    UIViewController *sourceViewController = self.sourceViewController; 
    UIViewController *destinationViewController = self.destinationViewController; 

    [sourceViewController.view addSubview:destinationViewController.view]; 

    destinationViewController.view.alpha = 0.0f; 

    [UIView animateWithDuration:0.5f 
          delay:0.1f 
         options:UIViewAnimationOptionCurveLinear 
        animations:^{ 
         destinationViewController.view.alpha = 1.0; 
        } 
        completion:^(BOOL finished){ 
         [destinationViewController.view removeFromSuperview]; 
         [sourceViewController presentViewController:destinationViewController animated:NO completion:NULL]; 
        }]; 

} 

@end 

和我所說的過渡形成這樣一個IBAction爲:

[self performSegueWithIdentifier:@"blurred" sender:self]; 

但是我得到的康壽警告/錯誤:

Unbalanced calls to begin/end appearance transitions for 
<DeviceControlViewController: 0x17597050>. 

將非常高興的任何幫助, 最好的vinc。

+0

我不知道你是否仍然在與這個問題鬥爭,但我猜你會得到這個錯誤,因爲你不告訴UIKit你正在移動viewcontrollers。當viewcontrollers移動到其他窗口或parentviewcontrollers,你應該通知['willMoveToParentViewController:'](http://apple.co/1VPJEqM)或['willMoveToWindow:'](http://apple.co/ 1Mr2qDx),使用'nil'來指示它何時被刪除。 – vrwim 2016-04-12 07:17:56

回答

0

你提到你從一個按鈕動作中調用了segue。你是否也有與該按鈕綁定的繼續?如果是這樣,你可能會兩次打電話給賽格。這導致第二次調用在第一次完成之前完成,並因此導致「不平衡」。