當我關閉導航堆棧中第三個viewController以模態方式呈現的MFMailComposeViewController或MFMessageComposeViewController的實例時,導航堆棧將被重置,並且根VC將被重新加載。我怎樣才能防止這種行爲,並保持原來的呈現viewController(堆棧中的第三個VC)?無論我從提出的VC,提出的VC還是navigationController中調用解僱,我都會得到相同的行爲。如何解除MFMailComposeViewController時導航控制器返回根目錄
這已被問過,但我還沒有看到解決方案。
應用結構如下:
TabBarController
Tab 1 - TripsNavController
-> Trips IntroductionVC (root VC) segue to:
-> TripsTableViewController segue to:
-> TripEditorContainerVC
- TripEditorVC (child of ContainerVC)
- HelpVC (child of ContainerVC)
Tab 2...
Tab 3...
Tab 4...
在TripEditorVC目前我MFMailComposeViewController。的功能如下在一個擴展的UIViewController即採用MFMailComposeViewControllerDelegate協議
func shareWithEmail(message: NSAttributedString) {
guard MFMailComposeViewController.canSendMail() else {
showServiceError(message: "Email Services are not available")
return
}
let composeVC = MFMailComposeViewController()
composeVC.setSubject("My Trip Plan")
composeVC.setMessageBody(getHTMLforAttributedString(attrStr: message), isHTML: true)
composeVC.mailComposeDelegate = self
present(composeVC, animated: true, completion: nil)
}
然後在委託方法我駁回MFMailComposeVC宣稱:
public func mailComposeController(_ controller: MFMailComposeViewController, didFinishWith result: MFMailComposeResult, error: Error?) {
switch result {
case .sent:
print("Mail sent")
case .saved:
print("Mail saved")
case .cancelled:
print("Mail cancelled")
case .failed:
print("Send mail failed")
}
if error != nil {
showServiceError(message: "Error: \(error!.localizedDescription)")
}
dismiss(animated: true, completion: nil)
}
我曾嘗試以下呈現並退出,並獲得相同的行爲,即:TripsNavController清除導航堆棧並重新加載TripsIntroductionVC作爲其根VC:
self.present(composeVC, animated: true, completion: nil)
self.parent?.present(composeVC, animated: true, completion: nil)
self.parent?.navigationController?.present(composeVC, animated: true, completion: nil)
self.navigationController?.present(composeVC, animated: true, completion: nil)
您需要提供一些實際的代碼,因爲沒有辦法,我們可以知道你做錯了什麼。根據調用者是誰以及該調用者是否提供了某些東西來消除邏輯工作。 – Dima
Dima - 請參閱帶編碼的編輯問題。 – Alpinista
你試過'presentationViewController?.dismiss(self,animated:true)'? – crizzis