2011-02-04 15 views

Odpowiedz

60

Jak zawsze, to jest dokładnie udokumentowane. Dokumentacja Apple dla UIPickerView powinna Ci powiedzieć, że metoda, którą prawdopodobnie chcesz, to – selectRow:inComponent:animated:.

+6

Jeśli ktoś nie może go znaleźć w Xamarin.iOS (MonoTouch) nazywana jest 'Wybierz()' 'nie SelectRow()' jak ty myślałby. –

+0

Dla mnie wywołanie metody '- selectRow: inComponent: animated:' nie było wystarczające, musiałem również wywołać delegata '-pickerView: didSelectRow: inComponent:' również programowo. – fruechtemuesli

+0

Prawo; programowo ustawienie wybranego wiersza nie wywołuje metody delegata. Jeśli chcesz podjąć działania w odpowiedzi na wszystkie zmiany selekcji, musisz zadzwonić sam. – warrenm

33

Tak, to jest bardzo łatwe [picker selectRow:row inComponent:component animated:NO];

21

Jeśli chcesz wywołać której przekazano metody pickerView: didSelectRow: inComponent należy nazwać ręcznie:

obj-C

[self.myPickerView selectRow:0 inComponent:0 animated:NO]; 
[self pickerView:self.myPickerView didSelectRow:4 inComponent:0]; 

Swift

self.myPickerView.selectRow(0, inComponent: 0, animated: false) 
self.pickerView(self.myPickerView, didSelectRow: 0, inComponent: 0) 
2

Praca w iOS 9 z XCode 7.3, to dokonać zmian w czasie wykonywania do danych w widoku kompletowania zwanego fieldPicker:

// first load your new data to your picker view's data source (not shown here...) then load the data into the picker view using it's delegate 
    [self.fieldPicker reloadAllComponents]; 

    // now that the data is loaded, select a row in the picker view through it's delegate 
    [self.fieldPicker selectRow:([self.theFields count] - 1) inComponent:0 animated:NO]; 

// retrieve the row selected in the picker view to use in setting data from your data source in textboxes etc. 
    long row = (long)[self.fieldPicker selectedRowInComponent: 0]; 
Powiązane problemy