无法通过在UIPickerView中选择特定行来获取值

时间:2013-02-27 07:49:51

标签: iphone objective-c uipickerview

我有一个国家阵列的选择器视图,我的观点是,当用户点击一个特定的行时,我会写一些代码取决于用户选择的元素,但是,不知何故它不起作用,请看这个:

-(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]);

它向我展示了我选择的国家/地区。但是当用户点击特定行时我需要做一些事情,我不明白该怎么做,请帮助我。

1 个答案:

答案 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;
    }
}