2017-01-12 2 views
0

Как я могу сделать сборщик, который имеет в качестве первого столбца frizzed «name», а для второго он будет «data»? Насколько я понял, это сборщик с двумя компонентами: name и stuff from the list, но он несколько name, который должен быть только одним и оглушенным, не имея возможности переместить его и просто перечеркивать данные из списка. Он способен каким-то образом реализовать его?Пользовательский 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

Вы пытаетесь иметь 'NAME:' в фиксированном положении слева от ваших данных выбора? – BytesGuy

+0

Да, Как будто это было внутри сборщика и могло только двигаться для второго компонента: эти буквы 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 
    } 
} 
Смежные вопросы