修改
我有一个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
}
要从我的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的按钮。
-(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);
}
我在我的viewdidload中调用它。
- (void)viewDidLoad
{
[super viewDidLoad];
[self start];
[self fillArray];
// Do any additional setup after loading the view, typically from a nib.
}
有人知道我做错了吗?
答案 0 :(得分:0)
当您看到许多与预期行数匹配的问号时,通常会返回缺少行的标题或视图的方法。
这可能是因为UIPickerView
s delegate
未设置(您这样做)或因为签名不正确。
您的签名已关闭。它必须完全符合:
- (NSString *)pickerView:(UIPickerView *)pickerView titleForRow:(NSInteger)row forComponent:(NSInteger)component;
^^^^
大多数人都忘了你必须设置UIPickerView
delegate
和 datasource
。