Objective c UIPickerview返回问号而不是数据
编辑 我有一个UIPickerview,我想用我的NSMutualArray中的数据填充它。我已经用NSLog测试了我的阵列中是否有东西,然后我得到了数据。但它不会填满我的皮克韦尔 我的pickerviewer有这个方法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
- (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
sdelegate
(您这样做了),也可能是因为签名不正确
你的签名被取消了。它需要准确地:
- (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:
将不起作用).