2010-08-10 140 views
2

在我的iPhone应用程序中,我想拥有一个带2个组件的UIPickerView。最初,左列将变宽,右列变窄以使左侧的文本易于阅读,以便从中进行选择。UIPickerView - 更改组件宽度

一旦选择了这个列,用户将点击右边的一列从中选择一个项目:当发生这种情况时,我想调整列的大小,以便左侧栏变窄,右侧栏变宽,文字可以被读取。

我一直在试验“pickerView widthForComponent”,但这似乎只在视图初始加载时才被调用。

有什么办法可以动态调整列的大小?

谢谢

+0

请参阅更新的答案。 – kovpas 2010-08-10 17:22:29

+0

所以,现在是时候接受答案,因为这是一个合适的解决方案;) – kovpas 2010-08-10 19:37:05

回答

2

您可以使用[pickerView reloadAllComponents]。

更新:

这是奇怪的。您也可以尝试检查以下solution

+0

我试过了,但'pickerView widthForComponent'不会再被调用。 – arossco 2010-08-10 17:09:43

+1

嗨Kovpas - 非常感谢!该解决方案是卓有成效:-) 在添加\t 'didSelectRow' “self.pickerView.delegate =无; self.pickerView.delegate =自我;” 重置选取器的委托会导致组件宽度重绘。 – arossco 2010-08-10 18:34:44

2

只是重新加载不起作用。您还需要致电setNeedsLayout

[pickerView reloadAllComponents]; 
[pickerView setNeedsLayout];