我有一个国家阵列的选择器视图,我的观点是,当用户点击一个特定的行时,我会写一些代码取决于用户选择的元素,但是,不知何故它不起作用,请看这个:
-(void)pickerView:(UIPickerView *)pickerView didSelectRow:(NSInteger)row inComponent:(NSInteger)component{
if ([countries objectAtIndex:0]){
NSLog(@"You selected USA");
}
}
但问题是,在NSLog总是“你选择了美国”,无论我选择哪一行。但是,当我把这行代码放在这里时:
NSLog(@"You selected this: %@", [countries objectAtIndex:row]);
它向我展示了我选择的国家/地区。但是当用户点击特定行时我需要做一些事情,我不明白该怎么做,请帮助我。
答案 0 :(得分:0)
快速回答:你应该使用
if ([[countries objectAtIndex:row] isEqualToString:@"USA"]) ...
答案很好:
定义枚举并使用switch-case结构:
// put this in the header before @interface - @end block
enum {
kCountryUSA = 0, // pay attention to use the same
kCountryCanada = 1, // order as in countries array
kCountryFrance = 2,
// ...
};
// in the @implementation:
-(void)pickerView:(UIPickerView *)pickerView
didSelectRow:(NSInteger)row
inComponent:(NSInteger)component
{
switch (row) {
case kCountryUSA:
NSLog(@"You selected USA");
break;
case kCountryCanada:
NSLog(@"You selected Canada");
break;
case kCountryFrance:
NSLog(@"You selected France");
break;
//...
default:
NSLog(@"Unknown selection");
break;
}
}