I realize this question has been inexactly asked around, but I haven\'t been able to find an answer to my problem.
I have a UITableViewController with static cells.
mailCVP.delegate = self
mailCVP = configureMailComposeVC()
This code sets the delegate but then creates a new instance, which doesn't have a delegate...
Note that there is also no point in creating the VC instance if MFMailComposeViewController.canSendMail
returns false
.
Make sure you use
controller.mailComposeDelegate = self
Not this one
controller.delegate = self
First of all use
mailCVP.mailComposeDelegate = self
instead of
mailCVP.delegate = self
Moreover, in case of Swift 3, delegate method is somehow updated which is:
func mailComposeController(_ controller: MFMailComposeViewController, didFinishWith result: MFMailComposeResult, error: Error?){
controller.dismiss(animated: true, completion: nil)
}
MFMailComposeViewController
is a subclass of UINavigationController
, which already has a delegate
property to handle navigation changes.
MFMailComposeViewController
has another property called mailComposeDelegate
, which is the property you are looking for.
Also, you should create the controller before setting the delegate.