【发布时间】: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,或者看起来是这样。
标签: ios objective-c uipickerview uipickerviewdatasource uipickerviewdelegate