2016-12-15 1 views
0

Ich benutze Xamarin ActionSheet Alert-Funktion und folgen Sie den Anweisungen von der offiziellen Website. Die von Website gegebenen Probe alsFür "actionSheetAlert", was ist nach (Aktion) =>

gezeigt
actionSheetAlert.AddAction(UIAlertAction.Create("Item One",UIAlertActionStyle.Default, (action) => Console.WriteLine ("Item One pressed."))); 

Nach (action) =>, es zeigt nur, wie wir hier eine Funktion hinzufügen können, das ist (action) => Console.WriteLine ("Item One pressed.")

Was passiert, wenn ich mehrere Aktionen hinzufügen? Kann ich einfach (action) => {......} verwenden? Oder kann ich (action) => function1() verwenden? Könnten Sie mir bitte weitere Beispiele zeigen, die ich nach (action) => machen kann?

+1

'(action) => {......}' wird funktionieren, und so wird '(action) => function1()'. – dasblinkenlight

+0

Danke für Ihre Antwort! Ich habe es versucht, ja, beide sind richtig. –

Antwort

0

Kurz gesagt, Sie können es in beide Richtungen tun und das gleiche Ergebnis erzielen.

actionSheetAlert.AddAction(UIAlertAction.Create("Item One",UIAlertActionStyle.Default, (action) => { 
Console.WriteLine ("Item One pressed."); 
Console.WriteLine (Date.UtcNow); 
})); 

oder

function messageOutput(){ 
     Console.WriteLine ("Item One pressed."); 
     Console.WriteLine (Date.UtcNow); 
    } 

actionSheetAlert.AddAction(UIAlertAction.Create("ItemOne",UIAlertActionStyle.Default, (action) => messageOutput); 

Im Detail Antwort ist, dass Sie die Frage nicht ganz klar, was Sie erreichen wollen. Wenn es sich um Optimierungen der Inline-Funktion handelt, können Sie auf diese question verweisen. Insbesondere haben Sie erwähnt, dass Sie Mono (Xamarin) verwenden, das einige andere Überlegungen hat.

0

Das ist Beispielcode für UIActionSheet, sollte es Ihnen helfen.

using System; 
    using System.Collections.Generic; 
    using UIKit; 

    namespace TestActionSheet 
    { 
    public class SimpleSheet 
    { 
     public delegate void SelectedHandler(string selectedValue); 
     public event SelectedHandler Selected; 
     private UIActionSheet actionSheet; 

     public SimpleSheet(List<string> optionList) 
     { 
      actionSheet = new UIActionSheet("SheetTitle"); 
      foreach (string str in optionList) 
      { 
       actionSheet.Add(str); 
      } 
      actionSheet.AddButton("Cancel"); 

      actionSheet.Clicked += (sender, e) => 
      { 
       if (e.ButtonIndex < actionSheet.ButtonCount - 1) 
       { 
        if (null != Selected) 
         Selected(optionList[(int)e.ButtonIndex]); 
       } 
      }; 
     } 

     public void Show(UIView view) 
     { 
      actionSheet.ShowInView(view); 
     } 
    } 
} 

und diejenigen Code wie folgt aufrufen:

SimpleSheet sSheet = new SimpleSheet(new System.Collections.Generic.List<string>() { "option1", "option2" }); 
       sSheet.Selected += (selectedValue) => { 
        Console.WriteLine("SelectedValue = "+selectedValue); 
       }; 
       sSheet.Show(this.View); 

Hoffe, es kann Ihnen helfen.

+0

Danke für Ihre Antwort. Es hilft. Und ich möchte auch fragen, –

+0

Danke für Ihre Antwort. Es hilft. Und ich möchte auch fragen, ist (null! = Selected) gleich mit (Selected! = Null)? Wenn nicht, was bedeutet das? Thx:) –

+0

Nette Frage, eigentlich gibt es keinen Unterschied. Das ist meine Gewohnheit, denn meine erste Programmiersprache ist C. Für C-Compiler kann es die Bedingung wie "if (a = 1)" unterstützen und es bedeutet, dass das wahr ist, also den Fehler wie "a = 1" zu verhindern (der richtige ist "a == 1"), ich bevorzuge "1 == a", wenn ich einen Fehler wie "1 = a" mache, wird der Compiler mir einen Fehler geben, es kann mir helfen, es zu überprüfen. –