即使在 [[UIPickerView alloc] init] 之后设置了委托,也没有调用 UIPickerView 委托方法
Posted
技术标签:
【中文标题】即使在 [[UIPickerView alloc] init] 之后设置了委托,也没有调用 UIPickerView 委托方法【英文标题】:UIPickerView delegate methods not being called even though delegate has been set after [[UIPickerView alloc] init] 【发布时间】:2015-07-31 11:15:59 【问题描述】:标题说明了一切,我有一个方法被调用来创建 UIPickerView,并且在与委托方法相同的视图控制器中。视图控制器实现了 UIPickerViewDataSource 和 UIPickerViewDelegate 协议
// ViewController.m
- (void)setUpPickerView
UIPickerView *pickerView = [[UIPickerView alloc] init];
pickerView.dataSource = self;
pickerView.delegate = self;
pickerView.showsSelectionIndicator=YES;
self.groupsTextField.inputView = pickerView;
-(NSInteger)numberOfComponentsInPickerView:(UIPickerView *)pickerView
return 1;
-(NSInteger)pickerView:(UIPickerView *)pickerView numberOfRowsInComponent:(NSInteger)component
return [self.pickerViewData count];
- (NSString *)pickerView:(UIPickerView *)pickerView titleForRow:(NSInteger)row forComponent:(NSInteger)component
return self.pickerViewData[row];
我已经看到很多答案,人们说如果 pickerView:numberOfRowsInComponent:component 返回 0 这将停止调用其他委托方法,但是当我设置断点时,我不会调用任何委托方法完全没有。
提前感谢您的帮助!
【问题讨论】:
你在.h文件中设置了委托协议吗 是的 @interface StudentShareListVC : EmbeddedVCself.groupTextField
初始化了吗?
是的,它是一个 IBOutlet,我刚刚删除并重新连接了所有插座,但问题仍然存在
groupsTextField
是什么类型,inputView
是什么?
【参考方案1】:
感谢大家的帮助,最后我做了我认为我必须做的事情,只是删除了视图控制器中的文本字段和与之相关的所有内容,然后重新开始。我发现我的新代码与我发布的内容没有真正的区别,所以我认为这与 IB 中的文本字段有关。
【讨论】:
【参考方案2】:将 Picker 委托添加到 .h 文件
@ interface ViewController :UIViewController< UIPickerViewDataSource , UIPickerViewDelegate >
【讨论】:
以上是关于即使在 [[UIPickerView alloc] init] 之后设置了委托,也没有调用 UIPickerView 委托方法的主要内容,如果未能解决你的问题,请参考以下文章
即使我设置了数据源、委托,另一个视图的 UIPickerView 属性也没有显示