如何以编程方式选择UIPickerView行并执行关联的方法

时间:2014-08-20 22:43:41

标签: ios xcode uipickerview

我有一个使用双组件UIPickerView的应用程序,并根据所选的各行执行代码。当我手动选择行时,一切正常;但是,当我尝试以编程方式执行此操作时,行标题会相应更新,但关联的方法不会执行。

我有一个NSTimer设置,每秒触发一次,我想执行与

相关的代码
-(void)pickerView:(UIPickerView *)pickerView didSelectRow:(NSInteger)row inComponent:(NSInteger)component{

每次此计时器触发时。

我试过了:

[_eventPicker reloadAllComponents];
[_eventPicker selectRow:currentEventComponent inComponent:0 animated:NO];
//my UIPickerView property is named _eventPicker, and I have an int currentEventComponent
//that is set when the user selects the row 

将其放入我的autoRefresh方法中,该方法每秒一次由计时器激活;然而,没有任何反应。但是,当我离开当前行并用拇指手动回到它时,一切都正常执行。

所以我的问题是,你如何通过我的autoRefresh计时器以编程方式执行pickerView didSelectRow?我做错了什么?

1 个答案:

答案 0 :(得分:1)

您当然可以自己调用委托方法。

[self pickerView: myPickerView 
    didSelectRow:[myPickerView selectedRowInComponent:component]
    inComponent:component];

如果您知道它是component,或者只知道它是0,那么您就可以了解它。如果你没有,说你想要检查每个组件:

for (NSInteger component = 0; component < myPickerView.numberOfComponents; ++component)
    [self pickerView: myPickerView 
        didSelectRow:[myPickerView selectedRowInComponent:component]
        inComponent:component];

您当然可以将didSelectRow电话路由到您自己的方法,您可以比didSelectRow更轻松地称呼自己。对于&#34;假的&#34;它似乎有点不足。回调。 另请参阅this question