如何通过button点击更改UIPickerView中的行的大小?

我试图这样做:调用reloadAllComponents:当button被点击,但它没有调用rowHeightForComponent:

从文档中,它看起来像reloadAllComponents:只是调用组件内的新数据的委托,但可能不会要求的大小。

相反,我会尝试在每个组件上调用rowSizeForComponent: 在这个方法的文档中,它说:“返回:给定组件中的行的大小,这通常是在组件中显示最大的string或视图所需的大小,一个select器视图获取这个属性通过调用pickerView:widthForComponent:和pickerView:rowHeightForComponent:delegate方法,并caching它,默认值是(0,0)。

然后,在你的UIPickerViewDelegate中,我将实现pickerView:widthForComponent:pickerView:rowHeightForComponent:

你不需要释放pickerView来设置新的单元格高度,比如@auspicious99 auspicious99。 相反,每次触发reloadAllComponents时,请设置委托或数据源:

 pickerView.delegate = self; //or pickerView.dataSource = self; [pickerView reloadAllComponents]; 

为什么reloadAllComponents方法不触发rowHeightForComponent方法真的很奇怪,但是这看起来像是一个有效的解决方法,使用上面的技巧。

希望能帮助到你。

您可能需要释放UIpickerview,并在pickerView中使用适当的返回值创build另一个:rowHeightForComponent:

这似乎是一个痛苦,但我不能想到另一个解决scheme。

不幸的是,调用rowSizeForComponent似乎没有帮助,因为正如文档所说:“select器视图通过调用pickerView:widthForComponent:和pickerView:rowHeightForComponent:委托方法来获取此属性的值,并对其进行caching。 所以,调用rowSizeForComponent只提供caching的值,而不是调用pickerView:rowHeightForComponent:来获取新的值。