2015-11-24 11 views
6

Czy w opcji Xamarin.iOS dostępny jest selektor iOS? Przeszukałem wszystko, ale nie ma ani przykładu, ani informacji; jest on jednak dostępny w Xamarin.Form.Picker w Xamarin.iOS dostępny

+1

Dodałem prosty przykład ... – SushiHangover

+0

Wielkie dzięki Robercie. To jest wspaniałe! – hotspring

+1

np. Uczę się przez przykład i mam ich setki, jak się nauczyłem Xammie 101 ;-) ... i wciąż je wykonuję, wydaje mi się, że codziennie znajdowałem coś nowego. – SushiHangover

Odpowiedz

11

Prawdziwy przykład numerek z UIPickerView: (iOS SDK)

enter image description here

Dodaj UIPickerView do XIb lub Storyboard nazywa slotMachineView:

using System; 
using UIKit; 

namespace Slots 
{ 
    public partial class ViewController : UIViewController 
    { 
     public ViewController (IntPtr handle) : base (handle) 
     { 
     } 

     public override void ViewDidLoad() 
     { 
      base.ViewDidLoad(); 
       slotMachineView.Model = new StackOverflowModel (selectedLbl); 
     } 

     public override void DidReceiveMemoryWarning() 
     { 
      base.DidReceiveMemoryWarning(); 
     } 
    } 

    public class StackOverflowModel : UIPickerViewModel 
    { 
     static string[] names = new string [] { 
      "pscorlib.dll", 
      "pscorlib_aot.dll", 
      "Mono.PlayScript.dll", 
      "PlayScript.Dynamic.dll", 
      "PlayScript.Dynamic_aot.dll", 
      "PlayScript.Optimization.dll", 
      "playshell.exe", 
      "psc.exe" 
     }; 

     UILabel lbl; 

     public StackOverflowModel (UILabel lbl) 
     { 
      this.lbl = lbl; 
     } 

     public override nint GetComponentCount (UIPickerView v) 
     { 
      return 3; 
     } 

     public override nint GetRowsInComponent (UIPickerView pickerView, nint component) 
     { 
      return names.Length; 
     } 

     public override string GetTitle (UIPickerView picker, nint row, nint component) 
     { 
      switch (component) { 
      case 0: 
       return names [row]; 
      case 1: 
       return row.ToString(); 
      case 2: 
       return new string ((char)('A' + row), 1); 
      default: 
       throw new NotImplementedException(); 
      } 
     } 

     public override void Selected (UIPickerView picker, nint row, nint component) 
     { 
      lbl.Text = String.Format ("{0} : {1} : {2}", 
       names [picker.SelectedRowInComponent (0)], 
       picker.SelectedRowInComponent (1), 
       picker.SelectedRowInComponent (2)); 
     } 

     public override nfloat GetComponentWidth (UIPickerView picker, nint component) 
     { 
      if (component == 0) 
       return 220f; 
      else 
       return 30f; 
     } 
    } 
} 
+0

@SushiHangover: Dzięki za przykładowy kod. Mam 1 pytanie. Załóżmy, że mam ten scenariusz: Najpierw chcę dynamicznie wyskoczyć selektora, gdy użytkownik kliknie przycisk, a następnie pozwolić użytkownikom wybrać wartość z selektora, a następnie zamknąć widżet wyboru po zakończeniu przez użytkowników wybierania wartości z selektora. Czy masz jakiś przykładowy kod dla tego scenariusza? – Thanh

+0

@SushiHangover: Właśnie utworzyłem nowe pytanie dotyczące mojego problemu technicznego, o którym wspomniałem w poprzednim komentarzu powyżej. Jeśli masz trochę wolnego czasu, zapoznaj się z tym pytaniem na stronie: http://stackoverflow.com/questions/39887140/how-to-dynamically-pop-up-and-hide-uipickerview-in-ios-xamarin- c-gra – Thanh

+0

co to jest "selectedLbl" w tym wierszu kodu: slotMachineView.Model = new StackOverflowModel (selectedLbl); w klasie ViewController –

Powiązane problemy