【问题标题】:UIPickerView delegate methods not being called even though delegate has been set after [[UIPickerView alloc] init]即使在 [[UIPickerView alloc] init] 之后设置了委托,也没有调用 UIPickerView 委托方法
【发布时间】: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 是什么?

标签: ios objective-c uipickerview uipickerviewdatasource uipickerviewdelegate


【解决方案1】:

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

【讨论】:

    【解决方案2】:

    将 Picker 委托添加到 .h 文件

      @ interface ViewController :UIViewController< UIPickerViewDataSource , UIPickerViewDelegate >
    

    【讨论】:

      猜你喜欢
      • 2012-06-27
      • 2019-10-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多