0

我有一个包含国家/地区数组的选择器视图,我的观点是,当用户点击特定行时,我将编写一些代码取决于用户选择的元素,但是,不知何故它不起作用,请看这个:

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

它在控制台中显示我选择了哪个国家/地区。但是当用户点击特定行时我需要做一些事情,我无法理解如何做到这一点,请帮助我。

4

1 回答 1

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;
    }
}
于 2013-02-27T07:52:31.807 回答