我有以下代码用于2个组件的选择器:
- (void)pickerView:(UIPickerView *)pickerView didSelectRow: (NSInteger)row inComponent:(NSInteger)component {
if (component == 0) {
NSLog(@"first");
}
else
{
NSLog(@"second");
}
}
问题是当用户尝试首先滚动组件0并等待它完全停止时,然后同时滚动组件1。
然后我将只有“秒”的控制台日志。所以看起来第一个事件被第二个事件覆盖了。
有没有办法我们可以等待选择器滚动事件自己完成?
感谢。
答案 0 :(得分:2)
在尝试使用双组件UIPickerView时,我遇到了同样的问题。有人建议,不要使用if语句。
而是这样做:
- (void)pickerView:(UIPickerView *)thePickerView didSelectRow:(NSInteger)row inComponent:(NSInteger)component
{
self.valueA = [self.valuePickerView selectedRowInComponent:0];
self.valueB = [self.valuePickerView selectedRowInComponent:1];
self.valueLabel.text = [NSString stringWithFormat:@"%i:%i", self.valueA, self.valueB];
}
当然,如果您正在寻找数组的元素,只需使用“objectAtIndex:selectedRowInComponent:0”
不要这样做:
<击> 撞击>
<击>- (void)pickerView:(UIPickerView *)thePickerView didSelectRow:(NSInteger)row inComponent:(NSInteger)component
{
if(component == 0){
self.valueA = ...;
}
else if (component == 1){
self.valueB = ...;
}
self.valueLabel.text = [NSString stringWithFormat:@"%i:%i", self.valueA, self.valueB];
}
击> <击> 撞击>
希望这可以帮助其他人在努力解决这个问题。