iOS:Subclassing UIPickerView 未在主视图中加载
iOS:Subclassing UIPickerView not loading in the main view
我正在尝试子类化 UIPickerView 但未在主视图中加载。
这是我的代码:
//Picker.h:
@interface Picker : UIPickerView
- (id)initWithFrame:(CGRect)frame;
//Picker.m:
- (id)initWithFrame:(CGRect)frame
{
self = [super initWithFrame:frame];
if (self) {
}
return self;
}
- (NSInteger)numberOfComponentsInPickerView:(UIPickerView *)pickerView{
return 1;
}
- (NSInteger)pickerView:(UIPickerView *)pickerView numberOfRowsInComponent:(NSInteger)component{
return 3;
}
- (NSString *)pickerView:(UIPickerView *)pickerView titleForRow:(NSInteger)row forComponent:(NSInteger)component {
return @"bla";
}
这是我 viewController 上的代码:
-(void)viewDidAppear:(BOOL)animated
{
[super viewDidAppear:YES];
self.myPicker = [[Picker alloc] initWithFrame:self.view.frame];
[self.view addSubview:_myPicker];
}
你们中有人知道为什么选择器没有加载到我的视图中吗?
非常感谢你的帮助。
首先,在Picker.h的header中添加<UIPickerViewDelegate, UIPickerViewDataSource>
。
然后,将委托分配给您自己的 Picker object。
-(id)initWithFrame:(CGRect)frame {
self = [super initWithFrame:frame];
if (self) {
self.delegate = self; // <-- add this line
}
return self;
}
我正在尝试子类化 UIPickerView 但未在主视图中加载。
这是我的代码:
//Picker.h:
@interface Picker : UIPickerView
- (id)initWithFrame:(CGRect)frame;
//Picker.m:
- (id)initWithFrame:(CGRect)frame
{
self = [super initWithFrame:frame];
if (self) {
}
return self;
}
- (NSInteger)numberOfComponentsInPickerView:(UIPickerView *)pickerView{
return 1;
}
- (NSInteger)pickerView:(UIPickerView *)pickerView numberOfRowsInComponent:(NSInteger)component{
return 3;
}
- (NSString *)pickerView:(UIPickerView *)pickerView titleForRow:(NSInteger)row forComponent:(NSInteger)component {
return @"bla";
}
这是我 viewController 上的代码:
-(void)viewDidAppear:(BOOL)animated
{
[super viewDidAppear:YES];
self.myPicker = [[Picker alloc] initWithFrame:self.view.frame];
[self.view addSubview:_myPicker];
}
你们中有人知道为什么选择器没有加载到我的视图中吗?
非常感谢你的帮助。
首先,在Picker.h的header中添加<UIPickerViewDelegate, UIPickerViewDataSource>
。
然后,将委托分配给您自己的 Picker object。
-(id)initWithFrame:(CGRect)frame {
self = [super initWithFrame:frame];
if (self) {
self.delegate = self; // <-- add this line
}
return self;
}