저는 Xcode와 Obj-C 프로그래밍에 대해 매우 새롭기 때문에 미리 사과드립니다.값을 변경하는 pickerview에서 JSON 사용하기
이 사이트와 다른 일부를 사용하여 첫 번째 구성 요소에서 옵션 중 하나를 선택하면 첫 번째 구성 요소에서 선택한 옵션과 관련된 옵션을 표시하도록 두 번째 구성 요소가 자동으로 변경되는 두 구성 요소가 함께 선택기를 구성했습니다. 구성 요소. 내가 일하는 예제 선택기보기는 해당 국가의 국가 및 풋볼 클럽을 사용합니다. 첫 번째 구성 요소에서 잉글랜드를 선택하면 두 번째 구성 요소에 영어 팀 목록이 표시됩니다. 첫 번째 구성 요소에서 스페인을 선택하면 두 번째 구성 요소 등에서 스페인어 팀 목록을 얻을 수 있습니다.
현재이 모든 국가와 팀은 모두 Xcode 내에서 하드 코딩됩니다. 내가 할 일은 MySQL 데이터베이스에 저장된이 카운티와 팀을 만든 다음 php를 사용하여이 레코드를 앱에 전송하는 것입니다. 그런 다음이 json 레코드를 배열로 사용하여 피커 뷰에 표시하려고합니다.
나는 앱에 json 데이터를 가져 오는 데 아무런 문제가 없지만 앱에서 피커 뷰와 함께 json을 사용할 때 문제가 발생합니다. 내가 JSON 배열 작업 할 피커보기를 점점 더 운이 없었다, 꽤 실망 얻을 시작하고있다
Heres는 내가 현재 하드 군과 팀과 가진 pickerview에 대한 코드 :
#import "ViewController.h"
@interface ViewController()
{
NSMutableArray *Nations;
NSMutableArray *England;
NSMutableArray *Espana;
NSMutableArray *Netherlands;
NSMutableArray *Germany;
NSMutableArray *Italy;
// Define keys
NSString *club;
}
@end
@implementation ViewController
- (void)viewDidLoad
{
[super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.
Nations = [[NSMutableArray alloc]initWithObjects:@"England",@"Espana",@"Netherlands",@"Germany",@"Italy", nil];
England=[[NSMutableArray alloc]initWithObjects:@"Arsenal",@"Chelsea",@"Manchester City",@"Manchester United",@"Liverpool",@"Tottenham",@"Fulham City",@"Stoke City",@"Sunderland",@"NewCastle United",@"Blackburn Rovers",@"Southampton",@"Wolvers",@"Aston Villa", nil];
Espana = [[NSMutableArray alloc]initWithObjects:@"Barcelona",@"Real Madrid",@"Valencia",@"Athletico Madrid",@"Athletico Balbao",@"Getafe CF",@"Sevilla CF", nil];
Netherlands = [[NSMutableArray alloc]initWithObjects:@"Celtics",@"Ajax",@"Amesterdam", nil];
Germany = [[NSMutableArray alloc]initWithObjects:@"Bayern Munich",@"Bermen",@"Fiorentina",@"Pampas",@"Nord", nil];
Italy = [[NSMutableArray alloc]initWithObjects:@"AC Milan",@"Inter Milan",@"Juventus", nil];
}
- (NSInteger)numberOfComponentsInPickerView:(UIPickerView *)pickerView
{
return 2;
}
- (NSInteger)pickerView:(UIPickerView *)pickerView numberOfRowsInComponent:(NSInteger)component
{
if(component ==0)
{
return [Nations count];
}
else {
if ([club isEqualToString:@"Espana"]) {
return [Espana count];
}
if ([club isEqualToString:@"Germany"]) {
return [Germany count];
}
if ([club isEqualToString:@"Netherlands"]) {
return [Netherlands count];
}
if ([club isEqualToString:@"Italy"]) {
return [Italy count];
}
else {
return [England count];
}
}
return 0;
}
- (NSString *)pickerView:(UIPickerView *)pickerView titleForRow:(NSInteger)row forComponent: (NSInteger)component
{
if(component ==0)
{
return [Nations objectAtIndex:row];
}
else {
if ([club isEqualToString:@"Espana"]) {
return [Espana objectAtIndex:row];
}
if ([club isEqualToString:@"Germany"]) {
return [Germany objectAtIndex:row];
}
if ([club isEqualToString:@"Netherlands"]) {
return [Netherlands objectAtIndex:row];
}
if ([club isEqualToString:@"Italy"]) {
return [Italy objectAtIndex:row];
}
else {
return [England objectAtIndex:row];
}
}
return 0;
}
-(void)pickerView:(UIPickerView *)pickerView didSelectRow:(NSInteger)row inComponent:(NSInteger)component
{
if (component == 0) {
club=[[NSString alloc] initWithFormat:@"%@" , [Nations objectAtIndex:row]];
[pickerView reloadComponent:1];
}
}
- (void)didReceiveMemoryWarning
{
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
}
- (void)dealloc {
}
@end
위의 코드에 아무런 문제가 없으므로 정상적으로 작동합니다. – user3406608
내가 원하는 것은이 코드를 변경하여 국가 및 팀의 일반 배열 대신 json 데이터를 사용하는 것입니다. 내 문제는 내가 그것에 대해 어떻게 해야할지 모르겠다. – user3406608
@ user3406608 UIPicker의 문제가 아니라 JSON을 파싱하는 것이 문제입니다. 그리고 그것은 다른 대답의 문제입니다. 나는 가능한 빨리 갱신 할 것이다. –