У меня есть два элемента управления на экране iPhone - TableView и UIPickerView. Когда вы выбираете одну ячейку в TableView, вы попадаете на другой экран, где отображается список типов одежды. Выбор одного предмета одежды из списка возвращает вас к первому экрану. В зависимости от вашего выбора количество компонентов в UIPickerView изменяется (1-4), и каждый компонент заполняется соответствующими данными.
Допустим, у вас есть три элемента в списке типов одежды, и каждый элемент должен иметь определенное количество компонентов в UIPickerView, когда он выбран:
Пояс - 3 компонента шириной 100, 55, 100
Бюстгальтер - 3 компонента шириной 55, 55, 55
Другое - 4 компонента шириной 100, 100, 55, 50
Сценарий № 1 - Все как и должно быть
1.1 - Вы выбираете предмет одежды "Пояс", и UIPickerView рисуется с 3 компонентами с соответствующими данными Пояса в каждом компоненте. Ширина компонентов составляет 100, 55, 100.
1.2 - Вы выбираете элемент одежды «Другой», и UIPickerView рисуется с 4 компонентами с соответствующими данными Другое в каждом компоненте. Ширина компонентов составляет 100, 100, 55, 50.
1.3 - Вы выбираете предмет одежды "Бюстгальтер", и UIPickerView рисуется с 3 компонентами с соответствующими данными Brassiere в каждом компоненте. Ширина компонентов составляет 55, 55, 55.
Сценарий № 2 - ширина компонентов не перерисовывается
1.1 - Вы выбираете предмет одежды "Пояс", и UIPickerView рисуется с 3 компонентами с соответствующими данными Пояса в каждом компоненте. Ширина компонентов составляет 100, 55, 100.
1.2 - Вы выбираете предмет одежды "Бюстгальтер", и UIPickerView рисуется с 3 компонентами с соответствующими данными Brassiere в каждом компоненте. Однако ширины компонентов по-прежнему составляют 100, 55, 100, а не 55, 55, 55.
1.3 - Вы выбираете «Другой» предмет одежды, и UIPickerView рисуется с 4 компонентами с соответствующими Другими данными в каждом компоненте. Ширина компонентов составляет 100, 100, 55, 50.
1.2 - Вы выбираете предмет одежды "Бюстгальтер", и UIPickerView рисуется с 3 компонентами с соответствующими данными Brassiere в каждом компоненте. Ширина компонентов теперь правильная - 55, 55, 55.
Начиная с пошагового выполнения кода, похоже, что метод делегата UIPickerView widthForComponent вызывается только при изменении количества компонентов в UIPickerView.
Есть ли способ заставить этот метод делегата запускаться каждый раз?
Обновление - 10.26.09
Я звоню [UIPickerView reloadAllComponents в делегате viewWillAppear, используя следующий код:
-(void)viewWillAppear:(BOOL)animated {
...
self.PopulatePickerArrays; // Populate components based on selection
[sizePicker reloadAllComponents];
...
}
Заранее спасибо.