【发布时间】:2015-02-18 12:05:41
【问题描述】:
我有一个特殊的UIPickerView,通过点击它手动选择行。发生这种情况时,所选行的样式会发生变化(文本颜色会发生变化并显示带有复选标记的图像)。同样,如果选择了另一行,则先前选择的行将“取消选择”,即它的样式更改为正常。
现在,当我选择一行时,它看起来是正确的:
但是,当我滚动到另一行并且所选行不再位于中间时,不会应用新样式(此处应选择 Antarktis):
但是,如果我进一步向下滚动几行,然后将其备份,则会将该行更新为正确的样式:
我在取消选择时遇到了同样的问题。如果我选择另一行,旧行似乎没有被取消选择,我得到了这个(现在应该取消选择 Antarktis):
但是,如果我将 Antarktis 行向后滚动到中间,它确实会被取消选择。
所以我的问题是UIPickerView 不会立即重绘可见但不在中间的行(它们可能以某种方式被缓存)。它们仅在特定行消失然后返回或显示全新行时才会重绘。
那么我可以强制它重绘这些行吗?我尝试在 UIPickerView 和特定行(它们是 UITableViewCell 的子类)上调用 setNeedsDisplay 方法,但它什么也没做。
谢谢!
【问题讨论】:
标签: ios cocoa-touch uiview uipickerview setneedsdisplay