UIPickerView 在 iOS 7 中不显示数据
Posted
技术标签:
【中文标题】UIPickerView 在 iOS 7 中不显示数据【英文标题】:UIPickerView does not display data in iOS 7 【发布时间】:2014-08-27 21:58:37 【问题描述】:我正在使用 UIPickerView 和 UIToolbar,并将其添加到 UIView 并将此视图添加到我的主视图中
addTimePicker=[[UIPickerView alloc]init];
[addTimePicker setFrame: CGRectMake(0, 20, 0, 0)];
addTimePicker.showsSelectionIndicator=YES;
addTimePicker.dataSource=self;
addTimePicker.delegate=self;
picker= [[UIView alloc] initWithFrame:CGRectMake(0, screenHeight/2+35, screenWidth, screenHeight/2+35)];
picker.backgroundColor=[UIColor whiteColor];
addToolbar=[[UIToolbar alloc] initWithFrame: CGRectMake(0, 0, self.view.frame.size.width, 45)];
addToolbar.barTintColor=[UIColor whiteColor];
addToolbar.items = [NSArray arrayWithObjects:flexibleSpace,addAvailabilityButton, nil];
[picker addSubview: addTimePicker];
[picker addSubview: addToolbar];
[self.view addSubview:picker];
然而,尽管我的控制器配置为符合 UIPickerViewDataSource 和 UIPickerViewDelegate 协议,我的
-(UIView *)pickerView:(UIPickerView *)pickerView viewForRow:(NSInteger)row forComponent:(NSInteger)component reusingView:(UIView *)view
或
-(NSString *)pickerView:(UIPickerView *)pickerView titleForRow:(NSInteger)row forComponent:(NSInteger)component
或
-(NSAttributedString *)pickerView:(UIPickerView *)pickerView attributedTitleForRow:(NSInteger)row forComponent:(NSInteger)component
根本没有被调用。
我环顾四周,但似乎找不到不调用它的原因。
尽管每次调用 numberOfRowsInComponent 时返回默认值 3,而 numberOfComponentsInPickerView 时返回默认值 5,但当我记录数据时,它显示我检查的任何组件都有 0 行。
我使用一个新项目测试了这段代码,它就像一个显示所有数据的魅力。
编辑:更多测试,这就是场景;
即使是该死的 UIDatePicker 也不起作用。我看不到 datepicker 应该具有的任何元素。我尝试简单地将日期选择器按原样扔到一个新视图上,然后通过将其连接到我的视图等来完成。
我开始怀疑这是否是一个全球性问题,因为它只特别影响这个项目。
【问题讨论】:
您是否忘记了您的@interface
的<UIPickerViewDelegate, UIPickerViewDataSource>
?
我没有。它调用 -(NSInteger)numberOfComponentsInPickerView:(UIPickerView *)pickerView 和 -(CGFloat)pickerView:(UIPickerView *)pickerView widthForComponent:(NSInteger)component 和 - (NSInteger)pickerView:(UIPickerView *)pickerView numberOfRowsInComponent:(NSInteger)component方法。但是 numberOfRowsInComponent 总是最终返回 0,或者看起来是这样。
【参考方案1】:
找出问题所在。
我使用了一个空的数据集处理程序https://github.com/dzenbot/DZNEmptyDataSet,它也试图处理选择器。删除此处理程序解决了我的问题。
我已经吸取了教训,而且我学得很好。 3rd 方库是一场豪赌。
干杯。
【讨论】:
以上是关于UIPickerView 在 iOS 7 中不显示数据的主要内容,如果未能解决你的问题,请参考以下文章
UIPickerView 在 UIView 中不显示添加的子视图
如何在iOS 7下更改UIPickerView中文本的颜色?