このカスタム セグエは視覚的には正しく機能しますが、完了すると警告が表示されます。
Warning: Attempt to present <DestViewController: 0x21059f40> on <SrcViewController: 0x1fd50cf0> whose view is not in the window hierarchy!
警告なしでこれを機能させる方法についての助けをいただければ幸いです。これに必要以上の時間を費やしました。警告なので、気にする必要があるかどうかさえわかりません。
- (void)perform {
UIViewController *src = (UIViewController *)self.sourceViewController;
UIViewController *dst = (UIViewController *)self.destinationViewController;
dst.view.alpha = 0;
[UIView animateWithDuration:0.5
animations:^{
[UIView setAnimationCurve:UIViewAnimationCurveEaseInOut];
[src.view addSubview:dst.view];
dst.view.alpha = 1;
}
completion:^(BOOL finished){
[dst.view removeFromSuperview];
//need to understand why this throws a warning but still works
[src presentViewController:dst animated:NO completion:^(){
[src reset];
}];
}];
}
アップデート
src UIViewController のリセット メソッドで、MPMoviePlayerController を停止するための呼び出しがありました。問題を引き起こしていた何らかの理由で、このセグエを削除すると完全に機能します。セグエの最終的な実装については、以下の私の回答を参照してください。