即使在 [[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 : EmbeddedVC 你的self.groupTextField 初始化了吗? 是的,它是一个 IBOutlet,我刚刚删除并重新连接了所有插座,但问题仍然存在 groupsTextField 是什么类型,inputView 是什么? 【参考方案1】:

感谢大家的帮助,最后我做了我认为我必须做的事情,只是删除了视图控制器中的文本字段和与之相关的所有内容,然后重新开始。我发现我的新代码与我发布的内容没有真正的区别,所以我认为这与 IB 中的文本字段有关。

【讨论】:

【参考方案2】:

将 Picker 委托添加到 .h 文件

  @ interface ViewController :UIViewController< UIPickerViewDataSource , UIPickerViewDelegate >

【讨论】:

以上是关于即使在 [[UIPickerView alloc] init] 之后设置了委托,也没有调用 UIPickerView 委托方法的主要内容,如果未能解决你的问题,请参考以下文章

即使我设置了数据源、委托,另一个视图的 UIPickerView 属性也没有显示

UIPickerView 简单操作和实际应用

UIPickerview 完成按钮不起作用,即使它没有调用选择器方法

未选中的 UIPickerView 值

UIPickerView 空

在 iOS 应用中使用 UIPickerView 时不需要采用数据源?