首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何通过点击按钮来改变UIPickerView中的行的大小?

如何通过点击按钮来改变UIPickerView中的行的大小?
EN

Stack Overflow用户
提问于 2012-04-26 17:59:50
回答 3查看 914关注 0票数 1

我试着这样做:当按钮被点击时调用reloadAllComponents:,但它没有调用rowHeightForComponent:

EN

回答 3

Stack Overflow用户

发布于 2012-04-26 19:17:49

从文档中看,reloadAllComponents:似乎只是在组件内部调用新数据的委托,但大概没有询问大小。

相反,我会尝试在每个组件上调用rowSizeForComponent:。在此方法的文档中,它表示"Returns:给定组件中行的大小。这通常是显示组件中用作行的最大字符串或视图所需的大小。选取器视图通过调用pickerView:widthForComponent:和pickerView:rowHeightForComponent: delegate方法获取此属性的值,并缓存它。默认值为(0,0)。“

然后,在您的UIPickerViewDelegate中,我将同时实现pickerView:widthForComponent:pickerView:rowHeightForComponent:

票数 1
EN

Stack Overflow用户

发布于 2014-10-29 18:35:26

你不需要像@auspicious99建议的那样释放pickerView来设置新的单元格高度。而是在每次触发reloadAllComponents时设置委托或dataSource,如下所示:

代码语言:javascript
复制
pickerView.delegate = self; //or pickerView.dataSource = self;
[pickerView reloadAllComponents];

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

希望能有所帮助。

票数 1
EN

Stack Overflow用户

发布于 2012-11-29 01:33:35

您可能需要释放该UIpickerview,并在pickerView:rowHeightForComponent中创建另一个具有适当返回值的one:

这看起来很痛苦,但我马上想不出另一个解决方案。

不幸的是,调用rowSizeForComponent似乎没有什么帮助,因为正如文档所说,“选择器视图通过调用选择器视图:widthForComponent:和选择器视图:rowHeightForComponent:委托方法来获取该属性的值,并将其缓存。”因此,调用rowSizeForComponent只提供缓存值,而不是调用pickerView:rowHeightForComponent:来获取新值。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10331188

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档