我已經創建了一個包含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;
}