2015-11-24 20 views
6

È disponibile il selettore iOS in Xamarin.iOS? Ho cercato in modo approfondito, ma non c'è né l'esempio né l'informazione è stata fondata; tuttavia, è disponibile in Xamarin.Form.Picker in Xamarin.iOS disponibile

+1

ho aggiunto un semplice esempio ... – SushiHangover

+0

Grazie mille Robert. È fantastico! – hotspring

+1

np, imparo dall'esempio e ne ho costruiti centinaia come ho imparato Xammie 101 ;-) ... e ancora li sto facendo, sembra che io abbia trovato qualcosa di nuovo ogni giorno. – SushiHangover

risposta

11

Un vero esempio sveltina di una UIPickerView: (iOS SDK)

enter image description here

Aggiungi un UIPickerView al XI ter o Storyboard chiamato 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: grazie per il codice di esempio. Ho 1 domanda. Supponiamo di avere questo scenario: in primo luogo, voglio far apparire in modo dinamico un selettore quando l'utente fa clic su un pulsante, quindi consentire agli utenti di selezionare un valore da un selettore e quindi chiudere il widget di selezione dopo che gli utenti hanno terminato di selezionare un valore dal selettore. Avete qualche codice di esempio per quello scenario? – Thanh

+0

@SushiHangover: ho appena creato una nuova domanda per il mio problema tecnico che ho menzionato nel mio precedente commento sopra. Se hai del tempo libero, dai un'occhiata a questa domanda: http://stackoverflow.com/questions/39887140/how-to-dynamically-pop-up-and-hide-uipickerview-in-ios-xamarin- c-game – Thanh

+0

cos'è "selectedLbl" in questa riga di codice: slotMachineView.Model = new StackOverflowModel (selectedLbl); nella classe ViewController –