我试着做了这种方式:电话reloadAllComponents:
被点击时按钮,但它不叫rowHeightForComponent:
Answer 1:
从文档,它看起来像reloadAllComponents:
只要求对内部组件的新数据的委托,但大概不问大小。
相反,我会尝试调用rowSizeForComponent:
每个组件上。 在此方法的文档,它说,“返回:在给定组件的行的大小这通常是显示用作成分的行最大串或视图所需的尺寸的选择器视图取的值。此属性通过调用pickerView:widthForComponent:和pickerView:rowHeightForComponent:委托方法,并将其缓存的默认值是(0,0)“。
然后,在你UIPickerViewDelegate,我会实现这两个pickerView:widthForComponent:
和pickerView:rowHeightForComponent:
Answer 2:
你并不需要释放pickerView设置如新细胞高度@auspicious99
建议。 相反设置委托或数据源每次触发reloadAllComponents这样的时刻:
pickerView.delegate = self; //or pickerView.dataSource = self;
[pickerView reloadAllComponents];
这真是奇怪,为什么reloadAllComponents方法不会触发rowHeightForComponent方法,但是这看起来象是用上述伎俩一个有效的解决方法。
希望能帮助到你。
Answer 3:
您可能需要释放UIpickerview然后再创建一个与pickerView适当的返回值:rowHeightForComponent:
这似乎是一个痛苦,但我想不出另一种解决方案副手的。
不幸的是,似乎调用rowSizeForComponent不会帮助,因为,作为文档说,“一个选择器视图通过调用pickerView获取此属性的值:widthForComponent:和pickerView:rowHeightForComponent:委托方法,并将其缓存。” 因此,呼吁rowSizeForComponent只提供缓存值,而不是调用pickerView:rowHeightForComponent:拿起新的价值。