如何调用pickerView:didSelectRow:inComponent:没有用户交互?

时间:2012-10-25 19:05:47

标签: objective-c ios uipickerview

我有2个组件,依赖pickerView。我有一个预览UIImageView,每次用户使用pickerView时都会更改(并触发didSelectRow:inComponent:)。这正如我预期的那样工作。

但是,我希望pickerView在应用启动时触发didSelectRow:,以便在用户看到UIImageView时有预览。在viewDidLoad中,当我尝试这个时:

[self pickerView:picker didSelectRow:row inComponent:component]; // row and component have 0 values. 

接下来发生的事情 - pickerView显示空白!删除此行,它再次完美地工作。我也尝试过这个:

[picker selectRow: row inComponent:component animated:NO];

认为它会触发didSelectRow:但是它不会触发它而我的UIImageView仍为空白。

关于如何在没有用户帮助的情况下调用didSelectRow:方法的任何建议?

更新:顺便说一下,选择器位于另一个UIView内(不是主要的)。万一重要。

2 个答案:

答案 0 :(得分:12)

仅当用户互动选择了某行时,才会调用

didSelectRow:...。如果您使用selectRow:...以编程方式选择行,则必须添加自己的逻辑以更新其他组件,如图像视图。

该原则对许多其他代表职能有效,例如tableView:didSelectRowAtIndexPath:

答案 1 :(得分:3)

根据您的评论,这就是您正在寻找的内容。 Does UIPickerView's selectRow:inComponent:animated: call pickerView:didSelectRow:inComponent:?

您必须手动调用didSelectRow方法。