我在 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 - 您选择“Other”服装项目,UIPickerView 由 4 个组件绘制,每个组件中都有适当的 Other 数据。组件宽度为 100、100、55、50。
1.3 - 您选择“胸罩”服装项目,UIPickerView 由 3 个组件绘制,每个组件中都有适当的胸罩数据。组件宽度为 55、55、55。
场景 #2 - 组件宽度未重绘
1.1 - 您选择“腰带”服装项目,UIPickerView 由 3 个组件绘制,每个组件中都有适当的腰带数据。组件宽度为 100、55、100。
1.2 - 您选择“胸罩”服装项目,UIPickerView 由 3 个组件绘制,每个组件中都有适当的胸罩数据。但是,组件宽度仍然是 100、55、100,而不是 55、55、55。
1.3 - 您选择“Other”服装项目,UIPickerView 由 4 个组件绘制,每个组件中都有适当的 Other 数据。组件宽度为 100、100、55、50。
1.2 - 您选择“胸罩”服装项目,UIPickerView 由 3 个组件绘制,每个组件中都有适当的胸罩数据。组件宽度现在是正确的 - 55、55、55。
从单步执行代码来看,UIPickerView widthForComponent 委托方法似乎仅在 UIPickerView 中的组件数量发生变化时才被调用。
有没有办法强制这个委托方法每次都触发?
更新 - 10.26.09
我正在使用以下代码在 viewWillAppear 委托中调用 [UIPickerView reloadAllComponents:
-(void)viewWillAppear:(BOOL)animated {
...
self.PopulatePickerArrays; // Populate components based on selection
[sizePicker reloadAllComponents];
...
}
提前致谢。