我有一个使用双组件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?我做错了什么?
答案 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。