피커에서 현재 선택된 내용을 표시하기 위해 UIPickerView
및 UITableViewCell
이 포함 된 사용자 지정보기를 만들었습니다. 내 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;
}