2016-08-02 6 views
2

J'ai une question sur Xamarin.Forms, j'essaie de revenir à la page de détails quand UIAlertView a appuyé sur OK. Mais je ne pouvais pas le faire. Voici mon code;UIAlertView Button Event

{ 
    UIAlertView alert = new UIAlertView(); 
    alert.Title = "Warning"; 
    alert.AddButton("OK"); 
    alert.Message = "Payment not found!"; 
    alert.Clicked += ButtonClicked; 
    alert.Show(); 
    return paymentList; 
} 

private void ButtonClicked(object sender, UIButtonEventArgs e) 
{ 
    //??? 
} 

Merci.

+0

C'est Xamarin.iOS et non Xamarin.Forms, pouvez-vous expliquer ce que cela a a à voir avec XF? –

+0

Quel est le but de l'utilisation de «UIAlertView» natif? Je voudrais vous suggérer d'utiliser 'Acr.UserDialogs' comme solution partagée pour' Xamarin.Forms'. –

+0

J'utilise Xamarin.Forms J'ai une page client et la page de paiement du client, si aucun paiement du client, donne un UIAlertView. Cliquez sur le bouton OK lorsque je souhaite naviguer dans la page arrière. – ozmert75

Répondre

0

UIAleartView n'a pas d'événements spéciaux pour les boutons. Mais, vous pouvez accéder à l'index de la touche pressée de la UIButtonEventArgs (ex: e.ButtonIndex) vérifier ce que le bouton est pressé

1

Tout d'abord, Xamarin.Forms ne pas avoir UIAlertView classe (A l'intérieur du projet PCL). Vous pouvez afficher l'alerte en appelant la méthode asynchrone DisplayAlert à l'intérieur de l'instance Page. Par exemple:

public class PaymentPage 
{ 
    ... 

    async void OnNoPaymentMethodDetected(object sender, EventArgs e) 
    { 
     await DisplayAlert("Error", "You have no payment method registered", "Okay"); 
     await Navigation.PopAsync(true); 
    } 
    ... 
} 

Note: votre méthode de navigation Pop dépend de votre méthode push de navigation. Par exemple, si vous avez utilisé PushModalAsync(page2), vous devez utiliser PopModalAsync() dans page2 pour revenir en arrière, sinon PopAsync() entraînera une erreur.

Si vous voulez avoir une alerte similaire dans le projet spécifique à iOS, vous devez utiliser le code suivant:

var controller = UIAlertController.Create("Error", "No payment method detected", UIAlertControllerStyle.Alert); 

controller.AddAction(UIAlertAction.Create("Okay", UIAlertActionStyle.Cancel, (sender) => 
{ 
    NavigationController.PopViewController(true); 
})); 

ShowDetailViewController(controller, null);