2013-11-03 3 views
0

영화 및 액터 배열이 포함 된 모델 객체가 있습니다. 동일한 ViewController에서 2 개의 선택기 (영화와 함께 한 선택기와 다른 선택기)를 채우려고합니다. 나는 그것이 어떻게 작동 하는지를 아직도 배우고 있기 때문에 제발 도와주세요.동일한보기 컨트롤러에서 2 개의 다른 선택기를 사용하여 2 개의 다른 배열을 표시하는 방법은 무엇입니까?

감사합니다. 내 코드는 다음과 같습니다

...

@implementation ViewController 

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 
    // Do any additional setup after loading the view, typically from a nib. 


    self.model = [[MovieModel alloc] init]; 


    for(int i = 0; i < self.model.count; i++){ 
     NSString *movies = [self.model movieForIndex:i]; 
     NSLog(@" Movie = %@", movies); 
    } 

    for(int i = 0; i < self.model.count; i++){ 
     NSString *actors = [self.model actorForIndex:i]; 
     NSLog(@" Actor = %@", actors); 
    } 


} 

는 // 이것은 내가 문제가있어 장소입니다. 감사!!!

#pragma mark - Picker View Delegate 

- (NSString *)pickerView:(UIPickerView *)pickerView titleForRow:(NSInteger)row forComponent:(NSInteger)component { 


    if (component == 0){ 

     return [self.model movieForIndex: row]; 

    } 

    else if (component == 1){ 

     return [self.model actorForIndex: row]; 

    } 

    else 
     return nil; 

} 



#pragma mark - Picker View Data Source 

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

    return 1; 

} 

- (NSInteger)pickerView:(UIPickerView *)pickerView numberOfRowsInComponent:(NSInteger)component { 

    return self.model.count; 

} 

@end 
+0

당신이 1 선택기를 원하십니까 구성 요소 (열) 또는 각 구성 요소가 두 개인 피커? – TreeTree

+0

"이슈"에는 어떤 종류의 이슈가 있습니까? Model 클래스는 어떤 모습입니까? –

답변

0

먼저 ViewController가 UIPickerViewDataSource 및 UIPickerViewDelegate를 구현하는지 확인해야합니다.

당신은보기에 선택기를 추가해야

UIPickerView *moviesAndActorsPicker = [[UIPickerView alloc] initWithFrame:CGRectMake(0, 0, 320, 100)]; 
[moviesAndActorsPicker setDelegate:self]; 
[self.view addSubview:moviesAndActorsPicker]; 

당신의 선택 도구는 두 가지 구성 요소가 - 배우를위한 영화 1 및 1 : 다음 각 행의 수를 설정

- (NSInteger)numberOfComponentsInPickerView:(UIPickerView *)pickerView { 
    return 2; 
} 

구성 요소 :

- (NSInteger)pickerView:(UIPickerView *)pickerView numberOfRowsInComponent:(NSInteger)component { 
    // differentiate which component it is 
    if (component == 0) { // movies 
     return movies.count; 
    } 
    else { // component = actors 
     return actors.count; 
    } 
} 
1

"pickerView"매개 변수가 데이터 소스 메소드. 이 매개 변수는 두 개의 선택기 중 어느 것이 데이터를 반환하는지 알려줍니다.

자,이 같은 두 개의 서로 다른 "IBOutlet"속성 또는 인스턴스 변수 (인스턴스 변수)에 두 피커 뷰를 연결하는 가정 해 봅시다 :

IBOutlet UIPickerView * moviePicker; 
IBOutlet UIPickerView * actorPicker; 

지금, 당신의 데이터 소스 방법, 당신은 물건을 할 수 있습니다 다음과 같이하십시오 :

- (NSString *)pickerView:(UIPickerView *)pickerView titleForRow:(NSInteger)row forComponent:(NSInteger)component { 


    if (pickerView == moviePicker){ 

     return [self.model movieForIndex: row]; 

    } 

    else if (pickerView == actorPicker){ 

     return [self.model actorForIndex: row]; 

    } 

    else 
     return nil; 

} 

그리고 지원하려는 각 데이터 소스 메소드에 대해 이와 같이하십시오. 너 괜찮아!

당신은 각 선택기 다음과 같은 tag 줄 수
+0

신난다, 이것은 완벽하게 작동합니다! 고맙습니다! –

0

:

self.firstPicker.tag = 1; 
self.secondPicker.tag = 2; 

UIPickerViewdelegatemethods의 :

- (NSInteger)pickerView:(UIPickerView *)pickerView numberOfRowsInComponent:(NSInteger)component { 
    if(pickerView.tag) 
    return self.firstArray.count; 
    else 
    return self.secondArray.count; 
    } 

등은

관련 문제