2017-02-02 17 views
1

私は、に関する奇妙な問題に直面しています。Dismiss ViewController。例えばのために予期せぬ動作の却下

: - 私はViewControllerをAにしています

その後、私は上の任意のビューコントローラを提示するのであれば、ナビゲーションコントローラのスタックに、我々は今、[A、B]

を持って

をBにプッシュします(MFMailComposeViewControllerなど)B

そしてメールを送信するか、ドラフトを削除した後、それはMFMailComposeViewControllerを閉じ、それは代わりのにリダイレクトB.

私はこれに関して研究しましたが、何も見つけることができません。

+2

'MFMailComposeViewControllerDelegate'の' didFinishWithResult'メソッドを表示できますか? –

+1

NavigationController、A、B、およびMFMailComposeViewControllerの追加/削除(Push/Pop/Present/Dismiss)のコードを共有します。 –

答えて

0

ViewControllerBのMFMailComposeViewControllerDelegateのdidFinishWithResultメソッドでPopviewcontrollerメソッドを呼び出した場合は、それが可能です。 代わりにdidFinishWithResultメソッド呼び出しでPopViewControllerメソッド呼び出しを回避します。

0

希望します。

desiredViewController = storyboard.instantiateViewController(withIdentifier: "desiredViewController")

> B.

`` `聞かせて絵コンテ= UIStoryboard(:: "メイン"、バンドルがnil名) - あなたは切り替えるときにそれを使用します

UIApplication.shared.delegate?.window ??。rootViewController? = desiredViewController `` `

0

が、これはあなたが、このようにそれを行うことができます

2

こんにちは役立ちますあなたは

self.present(MFMailComposeViewController, animated: true, completion: nil) 

希望を使用している場合がありますB

self.navigationController?.present(MFMailComposeViewController, animated: true, completion: nil) 

から提示MFMailComposeViewControllerにこれを試してくださいメールを送信した後に却下するか、またはドラフトを削除すると、MFMailComposeViewControllerが却下されます。その後、ViewController_Identifierが 'A_Screen'であればそれを確認できます。それを避けるか、それをエスケープする。それ以外の場合は、「B-Screen」で、そのView Controllerに移動します。

このロジックを使用して、必要に応じてナビゲートします。

let targetView: String! = self.restorationIdentifier 
    if targetView == "A_Screen"{ 
       //Do nothing 
      } 
      else{ 
    let B_View = self.storyboard?.instantiateViewController(withIdentifier: "B_Screen") as! BViewController 

       self.navigationController?.pushViewController(B_View, animated: true) 
      } 

ViewControllerのidentifierIDが設定されていることを確認してください。

お手伝いします。

関連する問題