2016-09-15 6 views
1

アップルのドキュメントに表示されているように、コンテナビューコントローラを開発しようとしています。今のコンテナビューコントローラ - 外観トランジションの開始/終了のアンバランスコール

私はviewDidAppearに簡単な初期化コードを持っている:

presentedVC = self.storyboard!.instantiateViewControllerWithIdentifier(Storyboard.yesNoControllerID) 
self.addChildViewController(presentedVC) 
presentedID = Storyboard.yesNoControllerID 
presentedVC.view.frame = containerView.bounds 
self.containerView.addSubview(presentedVC.view) 
presentedVC.didMoveToParentViewController(self) 

私はAppleのドキュメントのように、交換方法を実装している:

private func exchangeVC(withVC viewController: UIViewController){ 
    presentedVC.willMoveToParentViewController(nil) 
    self.addChildViewController(viewController) 

    viewController.view.frame = newViewStartFrame 
    let endFrame = oldViewEndFrame 
    self.containerView.addSubview(viewController.view) 

    self.transitionFromViewController(presentedVC, toViewController: viewController, duration: 0.25, options: UIViewAnimationOptions.CurveLinear, animations: { 
     viewController.view.frame = self.presentedVC.view.frame 
     self.presentedVC.view.frame = endFrame 
     }) { (finished) in 
      self.presentedVC.view.removeFromSuperview() 
      self.presentedVC.removeFromParentViewController() 
      viewController.didMoveToParentViewController(self) 
      self.presentedVC = viewController 
    } 

} 

をその後、私は単に呼んでいるボタンがあります。

let controller = self.storyboard!.instantiateViewControllerWithIdentifier(presentedID) 
exchangeVC(withVC: controller) 

このコードでは、私のコントローラは、ボタンprエッセンスしかし、アニメーションの最後に私が取得しています:0x7aecf730: のUIViewController用/終了外観遷移を開始する

アンバランス電話を。

私が間違ったことを教えてください。このエラー/警告を取り除く方法は?

答えて

1

私も同様の問題がありました。一般的に、その警告は、同じView Controllerを最初に表示せずに表示しようとすると表示されますが、遷移メソッドはすべてのイベントを処理する必要があります。あなたは上記されているように私は

UIView.animate(withDuration:animations:completion:) 

代わりの

UIViewController.transition(from:to:duration:options:animations:completion:) 

を使用して、それを固定してしまいました。もちろん、サブビューを手動で追加して削除する必要がありました。私はこの変更がうまくいかなかったのかどうかはわかりませんが、その警告を発行するUIViewControllerトランジション方法に何か問題があります。幸いにも修正は本当に簡単です。

+0

私はそれをセグに置き換えてしまった。 – Preetygeek

関連する問題