Я дал вам некоторый код, чтобы начать, но, пожалуйста, имейте в виду, что:
Это не оптимизированный код (например, вызов, который вы делаете для получения ваших данных, выполняется в главном потоке. В случае, если вам нужно получить большие объемы данных, вы должны выполнять асинхронные вызовы).
Важно понять, как реализован UIPickerView делегат & источник данных .
Я надеюсь, что это выведет вас на правильный путь ...
// Get your JSON Data
NSData *jsonData = [NSData dataWithContentsOfURL:[NSURL URLWithString:@"http://www.mydomain.com/myjson.json"]];
// Convert your JSON object to an 'NS' object
NSError *error;
id myJsonObj = [NSJSONSerialization JSONObjectWithData:jsonData options:NSJSONReadingAllowFragments error:&error];
// Extract any data from your JSON object
NSArray *myFirstArray = ...; // Your fixed array
NSArray *mySecondArray = ...; // An array with data from your JSON
// In your UIPIckerView datasource
- (NSInteger)numberOfComponentsInPickerView:(UIPickerView *)pickerView
{
return 2;
}
- (NSInteger)pickerView:(UIPickerView *)pickerView numberOfRowsInComponent:(NSInteger)component
{
switch(component)
{
case 0:
// First component
return [myFirstArray count];
break;
case 1:
// Second component
return [mySecondArray count];
break;
default:
return 0;
break;
}
return 0;
}
// In your UIPIckerView delegate
- (NSString *)pickerView:(UIPickerView *)pickerView titleForRow:(NSInteger)row forComponent:(NSInteger)component
{
switch(component)
{
case 0:
// First component
return [myFirstArray objectAtIndex:row]; // We assume that you got NSString objects in the array
break;
case 1:
// Second component
return [mySecondArray objectAtIndex:row]; // We assume that you got NSString objects in the array
break;
default:
return 0;
break;
}
return @"";
}