2017-01-12 8 views
0

最初の列が「name」になっているピッカーを2番目に「data」にすることはできますか? 私が入手した限り、それはnamestuff from the listの2つのコンポーネントを持つピッカーですが、複数のnameは1つで、リストからデータを移動することなく驚かされるはずです。 それを何とか実装できますか?カスタムUIPickerView iOS

私のカスタムUIPickerViewです:

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

namespace Test 
{ 
    class CustomPickerModel : UIPickerViewModel 
    { 
     private readonly IList<string> values; 
     string name; 
     public event EventHandler<PickerChangedEventArgs> PickerChanged; 

     public VehiclePickerModel(IList<string> values, string name) 
     { 
      this.values = values; 
      this.name = name; 
     } 

     public override nint GetComponentCount(UIPickerView picker) 
     { 
      return 2; 
     } 

     public override nint GetRowsInComponent(UIPickerView picker, nint component) 
     { 
      return values.Count; 
     } 

     public override string GetTitle(UIPickerView picker, nint row, nint component) 
     { 
      switch (component) 
      { 
       case 0: 
        return name; 
       case 1: 
        return values[(int)row]; 
       default: 
        throw new NotImplementedException(); 
      } 
     } 

     public override nfloat GetRowHeight(UIPickerView picker, nint component) 
     { 
      return 40f; 
     } 

     public override void Selected(UIPickerView picker, nint row, nint component) 
     { 
      if (this.PickerChanged != null) 
      { 
       this.PickerChanged(this, new PickerChangedEventArgs { SelectedValue = values[(int)row] }); 
      } 
     } 
    } 
} 

私が取得したいものを可視化です:

enter image description here

+0

ピッカーデータの左側の固定位置に '名前: 'を入れようとしていますか? – BytesGuy

+0

ええ、それはピッカーの内部にあり、第2のコンポーネントのためだけに動くことができるように、これらの文字A-I – yerpy

答えて

0

ここでの問題は、あなたが同じ行数を指定しているということです両方のコンポーネント。コンポーネント0が1行になるようにする必要があります。

public override nint GetRowsInComponent(UIPickerView picker, nint component) 
{ 
    switch (component) 
    { 
     case 0: 
      return 1; 
     case 1: 
      return values.Count; 
     default: 
      // However you want to handle 
    } 
} 
関連する問題