UIPickerview没有调用titleForRow

时间:2014-07-12 00:27:22

标签: ios objective-c uipickerview

我有一个uipickerview,我试图用coredata数据库中的dr列表填充它。我在viewdidload中加载了dr的列表,并且已经验证了它们是否存在nslog语句。在验证它们在那里之后,我做了一个reloadallcomponents并且我的pickerview显示了适当数量的“?”分数。当我输入断点时,我注意到我的应用程序通过并获取两次行数,并返回相应的数字,但titleforrow方法永远不会被调用。有什么想法吗?

- (NSInteger)numberOfComponentsInPickerView:
(UIPickerView *)pickerView
{
    return 1;
}

- (NSInteger)pickerView:(UIPickerView *)pickerView
numberOfRowsInComponent:(NSInteger)component
{
    NSLog(@"there are %d doctors",[self.doctors count]);
    return [self.doctors count];
}

- (NSString *)pickerView:(UIPickerView *)pickerView titleForRow:(NSInteger)row     forComponent:(NSInteger)component
{
    NSLog(@"Row %d has dr %@",row,[self.doctors objectAtIndex:row]);
    return [self.doctors objectAtIndex:row];
}

3 个答案:

答案 0 :(得分:0)

您必须将pickerView.dataSource = ...设置为您的控制器;

答案 1 :(得分:0)

感谢伊戈尔的回答,我走上了正确的轨道。我必须在ViewDidLoad中将委托设置为self。

我已经在类中选择了一个名为doctorPV的插座,因为组件和行方法被正确调用,我认为代理是通过包含pickerviewdelegate协议来推断的。我猜它不是。

我将self.doctorPV.delegate = self添加到我的viewDidLoad中,一切都像魔法一样。

谢谢伊戈尔。

答案 2 :(得分:0)

·H

#import <UIKit/UIKit.h>
@interface PickerViewController : UIViewController<UIPickerViewDelegate, UIPickerViewDataSource>

的.m

- (void)viewDidLoad {
      [super viewDidLoad];
      your picker view controller.delegate=self;
    your picker view controller.dataSource=self;
}