Dlaczego nie jest wywoływana metoda delegata widthForComponent UIPickerView za każdym razem, gdy pojawia się widok?

Mam dwie kontrolki na ekranie iPhone'a - TableView i UIPickerView. Gdy wybierzesz pojedynczą komórkę w widoku tabeli, zostaniesz przeniesiony na inny ekran, na którym wyświetlana jest lista rodzajów odzieży. Wybór pojedynczego elementu ubrania z listy powoduje powrót do pierwszego ekranu. Na podstawie dokonanego wyboru zmienia się liczba komponentów w UIPickerView (1-4), a każdy komponent jest wypełniany odpowiednimi danymi.

Powiedzmy, że masz trzy elementy na liście typów odzieży, a każdy element powinien mieć określoną liczbę komponentów w widoku UIPickerView, gdy jest wybrany:

Pas - 3 elementy o szerokości 100, 55, 100 Biustonosz - 3 elementy o szerokości 55, 55, 55 Inne - 4 elementy o szerokości 100, 100, 55, 50

Scenariusz # 1 - Wszystko jest tak, jak powinno być

1.1 - Wybierasz element ubioru „Pas”, a widok UIPickerView jest rysowany za pomocą 3 komponentów z odpowiednimi danymi Paska w każdym komponencie. Szerokość komponentów wynosi 100, 55, 100.

1.2 - Wybierasz element ubioru „Inne”, a UIPickerView jest rysowany za pomocą 4 komponentów z odpowiednimi innymi danymi w każdym komponencie. Szerokość komponentów wynosi 100, 100, 55, 50.

1.3 - Wybierasz element ubioru „Brassiere”, a UIPickerView jest rysowany za pomocą 3 komponentów z odpowiednimi danymi Brassiere w każdym komponencie. Szerokość komponentu wynosi 55, 55, 55.

Scenariusz # 2 - szerokości komponentów nie są przerysowywane

1.1 - Wybierasz element ubioru „Pas”, a widok UIPickerView jest rysowany za pomocą 3 komponentów z odpowiednimi danymi Paska w każdym komponencie. Szerokość komponentów wynosi 100, 55, 100.

1.2 - Wybierasz element ubioru „Brassiere”, a UIPickerView jest rysowany za pomocą 3 komponentów z odpowiednimi danymi Brassiere w każdym komponencie. Jednak szerokości komponentów wynoszą nadal 100, 55, 100, a nie 55, 55, 55.

1.3 - Wybierasz element ubrania „Inne”, a widok UIPickerView jest rysowany za pomocą 4 komponentów z odpowiednimi innymi danymi w każdym komponencie. Szerokość komponentów wynosi 100, 100, 55, 50.

1.2 - Wybierasz element ubioru „Brassiere”, a UIPickerView jest rysowany za pomocą 3 komponentów z odpowiednimi danymi Brassiere w każdym komponencie. Szerokość komponentów jest teraz poprawna - 55, 55, 55.

Od przechodzenia przez kod wygląda na to, że metoda delegata UFPickerView jest wywoływana tylko wtedy, gdy zmienia się liczba komponentów w UIPickerView.

Czy jest jakiś sposób, aby zmusić tę metodę delegowania do strzelania za każdym razem?

Aktualizacja - 10.26.09

Dzwonię do [UIPickerView reloadAllComponents w delegacie viewWillAppear przy użyciu następującego kodu:

-(void)viewWillAppear:(BOOL)animated {

 ...

 self.PopulatePickerArrays; // Populate components based on selection
 [sizePicker reloadAllComponents];

 ...

}

Z góry dziękuję.

questionAnswers(3)

yourAnswerToTheQuestion