2009-04-20 4 views
21

같은 viewController를 사용하여 같은 뷰에서 2 개의 개별 피커를 만들고 싶습니다. 그러나 어떻게 그들을 위해 별도의 델리게이트와 데이터 소스를 설정합니까?하나의보기에서 여러 PickerViews?

작동하지 않는 것 같습니다. 동일한 데이터로 표시됩니다. 이것에 샘플 코드가 있다면 많은 도움이 될 것입니다.

감사합니다. 데이터 소스 및 위임 프로토콜을 모두 각각의 방법은 예를 들면, UIPickerView * 매개 변수를 포함

답변

32

참고 : 다음과 같이 당신의 두 인스턴스를 구별하는 데 사용할 필요가

- (NSInteger)numberOfComponentsInPickerView:(UIPickerView *)pickerView 

:

- (NSInteger)numberOfComponentsInPickerView:(UIPickerView *)pickerView 
{ 

    if([pickerView isEqual: pickerOne]){ 
     // return the appropriate number of components, for instance 
     return 3; 
    } 

    if([pickerView isEqual: pickerTwo]){ 
     // return the appropriate number of components, for instance 
     return 4; 
    } 
} 
+0

구현 파일에 다음

#define kPickerOne 0 #define kPickerTwo 1 

... 감사 ... 유일한 문제는 내가 말하는 경고를 얻을 수있다 "경고 - 제어되지 않은 무효 기능의 끝에 도달"당신이 알고 왜? –

+1

아 .. 알았어, 아무것도 반환하지 않을 수 있었으므로, else {return 0; } 그리고 오류가 사라졌습니다 ... 두 분 모두에게 다시 한번 감사드립니다. 대단한 도움 : D –

+0

어떻게이 두 가지 다른 UIPIckers에 다른 배열 값을 할당 할 수 있습니까? – MaheshBabu

15

가장 간단한 방법은 pickerView의 tag 속성을 사용하는 것입니다. 필자는 일반적으로 가독성을 위해 헤더에이를 정의합니다. Interface Builder 또는 코드에서 태그를 설정할 수 있습니다. 이 위대한 작품을

-(NSInteger)numberOfComponentsInPickerView:(UIPickerView *)pickerView 
{ 
    if(pickerView.tag == kPickerOne) 
    { 
      // do something with picker one 
    } 
    else if(pickerView.tag == kPickerTwo) 
    { 
      // the other picker 
    } 
} 
관련 문제