我尝试这样做:点击按钮时调用reloadAllComponents:
但不调用rowHeightForComponent:
答案 0 :(得分:1)
从文档中看,reloadAllComponents:
只是调用组件内部新数据的委托,但可能不会要求大小。
相反,我会尝试在每个组件上调用rowSizeForComponent:
。在这个方法的文档中,它说:“返回:给定组件中行的大小。这通常是显示组件中用作行的最大字符串或视图所需的大小。选择器视图获取的值这个属性通过调用pickerView:widthForComponent:和pickerView:rowHeightForComponent:委托方法,并缓存它。默认值为(0,0)。“
然后,在您的UIPickerViewDelegate中,我将同时实现pickerView:widthForComponent:
和pickerView:rowHeightForComponent:
。
答案 1 :(得分:1)
您无需释放pickerView来设置新建的单元格高度,例如@auspicious99
。
而是在每次触发reloadAllComponents时设置委托或dataSource,如下所示:
pickerView.delegate = self; //or pickerView.dataSource = self;
[pickerView reloadAllComponents];
为什么reloadAllComponents方法不会触发rowHeightForComponent方法,这真的很奇怪,但这似乎是使用上述技巧的有效解决方法。
希望它有所帮助。
答案 2 :(得分:0)
您可能需要发布UIpickerview并在pickerView中创建另一个具有相应返回值的视图:rowHeightForComponent:
这似乎很痛苦,但我无法想到另一种解决办法。
不幸的是,调用rowSizeForComponent似乎无济于事,因为正如文档所说,“选择器视图通过调用pickerView:widthForComponent:和pickerView:rowHeightForComponent:委托方法来获取此属性的值,并缓存它“。因此,调用rowSizeForComponent只提供缓存值,而不是调用pickerView:rowHeightForComponent:来获取新值。