我试着这样做:当按钮被点击时调用reloadAllComponents:,但它没有调用rowHeightForComponent:
发布于 2012-04-26 19:17:49
从文档中看,reloadAllComponents:似乎只是在组件内部调用新数据的委托,但大概没有询问大小。
相反,我会尝试在每个组件上调用rowSizeForComponent:。在此方法的文档中,它表示"Returns:给定组件中行的大小。这通常是显示组件中用作行的最大字符串或视图所需的大小。选取器视图通过调用pickerView:widthForComponent:和pickerView:rowHeightForComponent: delegate方法获取此属性的值,并缓存它。默认值为(0,0)。“
然后,在您的UIPickerViewDelegate中,我将同时实现pickerView:widthForComponent:和pickerView:rowHeightForComponent:。
发布于 2014-10-29 18:35:26
你不需要像@auspicious99建议的那样释放pickerView来设置新的单元格高度。而是在每次触发reloadAllComponents时设置委托或dataSource,如下所示:
pickerView.delegate = self; //or pickerView.dataSource = self;
[pickerView reloadAllComponents];这真的很奇怪为什么reloadAllComponents方法不触发rowHeightForComponent方法,但这看起来是一个有效的解决方法,使用上面的技巧。
希望能有所帮助。
发布于 2012-11-29 01:33:35
您可能需要释放该UIpickerview,并在pickerView:rowHeightForComponent中创建另一个具有适当返回值的one:
这看起来很痛苦,但我马上想不出另一个解决方案。
不幸的是,调用rowSizeForComponent似乎没有什么帮助,因为正如文档所说,“选择器视图通过调用选择器视图:widthForComponent:和选择器视图:rowHeightForComponent:委托方法来获取该属性的值,并将其缓存。”因此,调用rowSizeForComponent只提供缓存值,而不是调用pickerView:rowHeightForComponent:来获取新值。
https://stackoverflow.com/questions/10331188
复制相似问题