2013-02-27 3 views
0

국가 배열을 포함하는 피커 뷰가 있습니다. 요점은 사용자가 특정 행을 탭하면 사용자가 선택한 요소에 따라 코드가 작성되지만 어떻게 든 작동하지 않는 것입니다. , 이것 좀 봐 :UIPickerView에서 특정 행을 선택하여 값을 얻습니다.

-(void)pickerView:(UIPickerView *)pickerView didSelectRow:(NSInteger)row inComponent:(NSInteger)component{ 

    if ([countries objectAtIndex:0]){ 
     NSLog(@"You selected USA"); 
    } 
} 

그러나 문제는, NSLog는 항상 내가 선택한 행에 관계없이 "You USA USA"입니다. 하지만 여기에 코드 줄을 넣었을 때 :

NSLog(@"You selected this: %@", [countries objectAtIndex:row]); 

내가 선택한 국가의 콘솔을 보여줍니다. 하지만 사용자가 특정 행을 탭 할 때해야 할 일이 있습니다.이 작업을 수행하는 방법을 이해할 수 없습니다. 제발 도와주세요.

+0

'([국가 objectAtIndex 경우 : 0 ])'배열 국가의 첫 번째 인덱스 (인덱스 0)에있는 객체가 null이 아니라면 항상 TRUE/YES로 평가됩니다. 대신에'if (row == 0)'을 사용하십시오. –

+0

Hermann : 감사합니다. –

답변

0

빠른 대답 :

이 열거를 정의하고 스위치 케이스 구조를 사용 : 당신은

if ([[countries objectAtIndex:row] isEqualToString:@"USA"]) ...

멋진 대답을 사용해야합니다

// 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; 
    } 
} 
+0

만약 내가 이렇게하면, 사용자가 USA 나 독일을 선택할 때 어떻게 변수를 할당 할 수 있을까요? 나는 if 진술이 필요할 것 같다. –

+0

좋아, 이제는 문제를 더 잘 이해하고 대답을 업데이트했다. – MrTJ

+0

대단히 감사합니다 MrTj –

관련 문제