2016-04-15 4 views
0

У меня есть список, сохраненный в объекте. Я хочу, чтобы заполнить тот же список в UIPickerView в Xamarin iOS, но он показывает ошибку tcasting.Заполнить список в UIPickerView в Xamarin iOS

этот список исходит из веб-сервиса.

Заранее спасибо.

+0

Пожалуйста, ваш код. –

ответ

2

У вас есть образцы образцов от Xamarin? В частности, это one, ниже - фрагмент кода, который настраивает пользовательский UIPickerView.

Похоже, что вам нужно, чтобы создать модель, которая является подклассом UIPickerViewModel, here является Документами из Xamarin этого класса

void CreatePicker() 
    { 
     // 
     // Empty is used, since UIPickerViews have auto-sizing, 
     // all that is required is the origin 
     // 
     myPickerView = new UIPickerView (CGRect.Empty){ 
      AutoresizingMask = UIViewAutoresizing.FlexibleWidth, 
      ShowSelectionIndicator = true, 
      Model = new PeopleModel (this), 
      BackgroundColor = backgroundColor, 
      Hidden = true 
     }; 
     // Now update it: 
     myPickerView.Frame = PickerFrameWithSize (myPickerView.SizeThatFits (CGSize.Empty)); 
     View.AddSubview (myPickerView); 
    } 

    public class PeopleModel : UIPickerViewModel { 
     static string [] names = new string [] { 
      "Brian Kernighan", 
      "Dennis Ritchie", 
      "Ken Thompson", 
      "Kirk McKusick", 
      "Rob Pike", 
      "Dave Presotto", 
      "Steve Johnson" 
     }; 

     PickerViewController pvc; 
     public PeopleModel (PickerViewController pvc) { 
      this.pvc = pvc; 
     } 

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

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

     public override string GetTitle (UIPickerView picker, nint row, nint component) 
     { 
      if (component == 0) 
       return names [row]; 
      else 
       return row.ToString(); 
     } 

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

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

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

Помогло ли вам это? вы нашли решение своей проблемы? –

+0

Добавил сообщение в блоге о настройке Picker, если это помогает. https://www.casseykeating.com/home/2017/6/7/uipickerview-xamarin-ios – cfl

Смежные вопросы