UIPickerView 不显示

Posted

技术标签:

【中文标题】UIPickerView 不显示【英文标题】:UIPickerView not displaying 【发布时间】:2010-05-02 18:56:32 【问题描述】:

我在 UIView 上有一个 UIPickerView。我在 .h 中实现了它的协议,在 .m 文件中实现了委托:

 <UIPickerViewDataSource, UIPickerViewDelegate>

在 IB 中,我已将上述内容连接到选择器,我也有一个 IBoutlet。方法如下所示:

- (NSInteger)numberOfComponentsInPickerView:(UIPickerView *)thePickerView 
return 1;


- (NSInteger)pickerView:(UIPickerView *)thePickerView numberOfRowsInComponent:(NSInteger)component 
return [self.arr count];


- (NSString *)pickerView:(UIPickerView *)thePickerView titleForRow:(NSInteger)row  forComponent:(NSInteger)component 
return @"test";


- (void)pickerView:(UIPickerView *)thePickerView didSelectRow:(NSInteger)row inComponent:(NSInteger)component 
//do something

有什么想法可以让选择器正常工作吗?

【问题讨论】:

在numberOfRowsInComponent中,你验证过self.arr不是nil,实际上有数据吗? 这种方法永远不会成功。没有一个委托方法被击中。 现在有什么问题? 【参考方案1】:

如果委托方法没有被调用,那么在 IB 中仔细检查选择器视图的委托和数据源出口是否连接到文件的所有者。

在.h文件中,picker view outlet应该这样声明:

@property(非原子,保留)IBOutlet UIPickerView *pickerView;

【讨论】:

所有这些都很好。我发现由于某种原因 UIPickerView 没有被初始化。我断开了它的 IBoutlet 并重新连接。现在一切都很好。 这对我没有任何作用。我只是从情节提要中拖出,Xcode 使该属性有点不同。 @property (weak, nonatomic) IBOutlet UIPickerView *departmentPickerView;【参考方案2】:

您尚未将委托分配给 UIPickerView,这就是没有调用任何委托方法的原因。

 UIPickerView *pickerView;
 pickerView.delegate = self;//write this line in view did load method.

希望这会有所帮助,如果这能回答您的问题,请告诉我..:)

【讨论】:

【参考方案3】:

有时是因为pickerview没有连接到文件所有者的数据源和笔尖中的委托

【讨论】:

以上是关于UIPickerView 不显示的主要内容,如果未能解决你的问题,请参考以下文章

为 UIPickerView 创建一个完成按钮

如何在多 UIPICKERVIEW 中配置“DidSelectRow”?

UIPickerView - 移除曲率并添加文本

UIPickerView 列标题

如何测试 DatePickerIOS

UIPickerView 不显示