L'accès ViewController dans DependencyService à présent MFMailComposeViewController
Comment puis-je accéder à la ViewController dans mon DependencyService de présenter un MFMailComposeViewController? J'ai essayé d'utiliser l'Application.Contexte mais ce qui semble être seul à travailler sur Android. Des conseils?
Vous devez vous connecter pour publier un commentaire.
Vous pouvez présenter une MFMailComposeViewController en faisant un
window.RootController.PresentViewController (mail controller, true, null);
. En fonction de votre application architecture, la RootViewController pourrait ne pas être utilisable ViewController dans la hiérarchie. Dans ce cas, vous obtenez unDans ce cas, vous avez à creuser pour le béton ViewController, dans mon cas c'est:
qui est un peu méchant, mais qui fonctionne (Un problème pour ce ont été déposés pour l'avenir fix).
La solution complète ressemble alors à:
dans votre
AppDelegate.cs
, ajouter ceci:dans votre PCL projet, déclarer l'interface:
ISendMailService.cs
dans votre iOS de projet, mettre en œuvre et d'enregistrer l'interface:
SendMailService.cs
Et vous pouvez maintenant utiliser à partir de votre Xamarin.Les formes PCL projet:
Utilisation:
UIApplication.SharedApplication.KeyWindow.RootViewController.PresentViewController(controller, true, null);
Je voudrais ajouter une réponse supplémentaire basé sur de la KeyWindow pas toujours la fenêtre principale. (cela se produit lorsque vous présentez votre contrôleur après que l'utilisateur a interagi avec une fiche action ou de la boîte de dialogue d'alerte)
Cela permettra de garantir que vous obtenez la Xamarin Forms plate-forme de moteur de rendu de la fenêtre, puis de trouver le tout présenté ViewController et le retour de l'utiliser pour la présentation de l'INTERFACE utilisateur ou de la vue du contrôleur, vous aurez besoin de.
Cela ne fonctionne que dans au-dessus de toutes les solutions
Juste pour la référence. Il m'a fallu un certain temps pour comprendre comment le lancer à partir de la fenêtre modale.
Voici la solution: