0

피커에서 현재 선택된 내용을 표시하기 위해 UIPickerViewUITableViewCell이 포함 된 사용자 지정보기를 만들었습니다. 내 PickerViewController이 모두 delegate 피커의 dataSource로 설정되어, 나는 numberOfComponentsInPickerView:을 구현 한 pickerView: numberOfRowsInComponent:, 그리고 pickerView: titleForRow: forComponent:하지만 피커 방법에 NSLog 전화를 걸에 프로그램이 실행될 때 빈 표시, 감사, 나는 발견했습니다 메소드가 결코 호출되지 않는다는 것입니다. 피커가 PickerViewController과 올바르게 연결되어있는 것처럼 보이므로 문제가 무엇인지 전혀 알 수 없습니다.UIPickerViewDelegate 메서드 호출되지 않음

iOS 캘린더 앱에서 "시작 & 끝"보기를 살펴 보겠습니다. 나는 정확하게 이것을 모방하려하지만, 하나만 사용하는 대신에 UITableViewCell을 사용한다.

PickerViewController.h

#import <UIKit/UIKit.h> 

@interface PickerViewController : UIViewController 

@property (weak, nonatomic) IBOutlet UITableViewCell *pickerSelection; 
// Property to dynamically determine what content to display in the picker. 
@property (nonatomic) BOOL userIsChoosingClass; 

@end 

의 viewDidLoad

- (void)viewDidLoad { 
    [super viewDidLoad]; 
    NSLog(self.thePicker.delegate.description); 
    if (self.userIsChoosingClass) { 
     self.pickerSelection.textLabel.text = @"Class"; 
    } else { 
     self.pickerSelection.textLabel.text = @"Major"; 
    } 
} 

피커보기 데이터 소스 방법

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

- (NSInteger)pickerView:(UIPickerView *)pickerView 
numberOfRowsInComponent:(NSInteger)component { 
    size_t numberOfRows = 0; 

    if (self.userIsChoosingClass) { 
     numberOfRows = [self.brain classChoicesForSignUp].count; 
    } else { 
     numberOfRows = [self.brain majorChoicesForSignUp].count; 
    } 

    return numberOfRows; 
} 

피커보기 위임 방법

- (NSString *)pickerView:(UIPickerView *)pickerView titleForRow:(NSInteger)row 
      forComponent:(NSInteger)component { 
    NSLog(@"Picker view delegate method called"); 
    NSString *title; 

    if (self.userIsChoosingClass) { 
     title = [[self.brain classChoicesForSignUp] objectAtIndex:row]; 
    } else { 
     title = [self.majorChoices objectAtIndex:row]; 
    } 

    return title; 
} 

답변

1

은 당신의 numberOfRows는 ... 데이터 소스 메소드가 0을 반환, 다음 대리자 메서드가 호출되지 않을 경우 - 그것은 아무튼 경우 피커 행의 제목을 요청하지 않습니다 표시 할 행이 있다고 생각하지 않습니다.