2017-09-06 6 views
0

何らかの理由でこのコードがうまくいかず、「警告:ビューがウィンドウ階層にない*に*を表示しようとしています」というエラーが表示されます。しかし、私はこれを修正する方法を理解していません。ここに私のコードです。電子メールを送信したときにのみ別のビューでセグを実行するにはどうすればよいですか?

func mailComposeController(_ controller: MFMailComposeViewController, didFinishWith result: MFMailComposeResult, error: Error?) { 
    switch result { 
    case .cancelled: 
     print("Mail cancelled") 
    case .saved: 
     print("Mail saved") 
    case .sent: 
     print("Mail sent") 
     self.performSegue(withIdentifier: "AllList", sender: self) 
     AllListOfViolations.violationType.append("\(LocationAndTimeData.getSystemDate())") 
    case .failed: 
     print("Mail sent failure: \(error?.localizedDescription ?? "nil")") 
    } 
    controller.dismiss(animated: true, completion: nil) 
} 

答えて

0

問題は、あなたがMFMailComposeViewControllerを却下するので、いくつかの条件に基づいてdismissの完了ブロックでセグエしようとする必要があるセグエ実行する前です。 prepareForSegueAllListOfViolations.violationTypeにアクセスする場合は、performSegueを呼び出す前にオブジェクトを配列に追加してください。

func mailComposeController(_ controller: MFMailComposeViewController, didFinishWith result: MFMailComposeResult, error: Error?) { 
    var needToSegue = false 
    switch result { 
    case .cancelled: 
     print("Mail cancelled") 
    case .saved: 
     print("Mail saved") 
    case .sent: 
     needToSegue = true 
     print("Mail sent") 
    case .failed: 
     print("Mail sent failure: \(error?.localizedDescription ?? "nil")") 
    } 
    controller.dismiss(animated: true) { 
     if needToSegue { 
      AllListOfViolations.violationType.append("\(LocationAndTimeData.getSystemDate())") 
      self.performSegue(withIdentifier: "AllList", sender: self) 
     } 
    } 
} 
関連する問題