Objective c UIPickerview返回问号而不是数据

Objective c UIPickerview返回问号而不是数据,objective-c,xcode,Objective C,Xcode,编辑 我有一个UIPickerview,我想用我的NSMutualArray中的数据填充它。我已经用NSLog测试了我的阵列中是否有东西,然后我得到了数据。但它不会填满我的皮克韦尔 我的pickerviewer有这个方法 - (NSString *)pickView:(UIPickerView *)pickview titleForRow:(NSInteger)row forComponent:(NSInteger)component{ return [dataArray obje

编辑

我有一个UIPickerview,我想用我的NSMutualArray中的数据填充它。我已经用NSLog测试了我的阵列中是否有东西,然后我得到了数据。但它不会填满我的皮克韦尔

我的pickerviewer有这个方法

- (NSString *)pickView:(UIPickerView *)pickview titleForRow:(NSInteger)row forComponent:(NSInteger)component{


     return [dataArray objectAtIndex:row];

}

- (NSInteger)numberOfComponentsInPickerView:(UIPickerView *)pickerView{
    return 1;// assuming a single spinning wheel of strings (not split into left/right for example)
}

-(NSInteger)pickerView:(UIPickerView *)pickerView numberOfRowsInComponent:(NSInteger)component{
    return [json count]; // the number of strings that your parser finds and adds to the array
}
-(IBAction)setPicker:(id)sender{
    if (pickview.hidden == TRUE) {
         [pickview setHidden:NO];
        [pickview setDelegate:self];
        [pickview setDataSource:self];

        [pickview reloadAllComponents];
    }else {
         [pickview setHidden:YES];
         [pickview setDelegate:self];
         [pickview setDataSource:self];
        [pickview reloadAllComponents];
    }
}
为了从JSON中获取数据,我使用以下两种方法。我在viewdidload中调用start函数

-(void) getData:(NSData *) data{

    NSError *error;

    json = [NSJSONSerialization JSONObjectWithData:data options:kNilOptions error:&error];

}
-(void) start {

    NSURL *url = [NSURL URLWithString:kGETUrl];

    NSData *data = [NSData dataWithContentsOfURL:url];
    [self getData:data];

}
我还有一个按钮,隐藏并显示我的UIPickerviewer

- (NSString *)pickView:(UIPickerView *)pickview titleForRow:(NSInteger)row forComponent:(NSInteger)component{


     return [dataArray objectAtIndex:row];

}

- (NSInteger)numberOfComponentsInPickerView:(UIPickerView *)pickerView{
    return 1;// assuming a single spinning wheel of strings (not split into left/right for example)
}

-(NSInteger)pickerView:(UIPickerView *)pickerView numberOfRowsInComponent:(NSInteger)component{
    return [json count]; // the number of strings that your parser finds and adds to the array
}
-(IBAction)setPicker:(id)sender{
    if (pickview.hidden == TRUE) {
         [pickview setHidden:NO];
        [pickview setDelegate:self];
        [pickview setDataSource:self];

        [pickview reloadAllComponents];
    }else {
         [pickview setHidden:YES];
         [pickview setDelegate:self];
         [pickview setDataSource:self];
        [pickview reloadAllComponents];
    }
}
我使用此方法填充数组

-(void) fillArray{
    dataArray = [[NSMutableArray alloc] init];
    for (int i=0; i<[json count]; i++) {
        NSDictionary *info = [json objectAtIndex:i];
        [dataArray addObject:[info objectForKey:@"Use_naam"]];

    }
    NSLog(@"%@\n",dataArray);


}

有人知道我做错了什么吗?

当您看到许多问号与预期的行数匹配时,通常是这些方法返回缺少的行的标题或视图

这可能是因为未设置
UIPickerView
s
delegate
(您这样做了),也可能是因为签名不正确

你的签名被取消了。它需要准确地:

- (NSString *)pickerView:(UIPickerView *)pickerView titleForRow:(NSInteger)row forComponent:(NSInteger)component;
                 ^^^^

大多数人都忘记了您必须设置
UIPickerView
委托
数据源

问题就在这里,我的朋友。您在代码中使用的引用是什么?你自己在编码吗?还有什么是json?您是否也在info中获得了任何数据?否,它用问题标记填充pickerviewer这是我的dataArray的输出:(Stef、Brecht、Michele、Niels)检查:titleForRow委托方法必须拼写为
pickerView:titleForRow:forComponent:
pickView:titleForRow:forComponent:
将不起作用).