【发布时间】:2014-04-24 10:39:55
【问题描述】:
我对 Xcode 和 Obj-C 编程还是很陌生,所以提前道歉。
使用此站点和一些其他站点,我已经设法将Pickerview一起划分了两个组件,在选择第一个组件中的一个选项时,第二个组件被自动更改为显示与第一个组件中选择的选项相关的选项. 我开始工作的示例选择器视图使用这些国家的国家和足球俱乐部,例如如果您在第一个组件中选择英格兰,您会在第二个组件中获得英国球队列表,如果您在第一个组件中选择西班牙,您会在第二个组件中获得西班牙团队列表,依此类推。
目前所有这些国家和团队都在 Xcode 中进行了硬编码。 我不想做的是将这些县和团队存储在 MySQL 数据库中,然后使用 php 将这些记录发送到应用程序。之后我想在一个数组中使用这些 json 记录并将它们显示在选择器视图上。
我将 json 数据导入应用程序没有问题,但是在应用程序上使用带有选择器视图的 json 时,我遇到了一些问题。我没有运气让选择器视图与 json 数组一起使用,它开始变得非常令人沮丧
这是我目前在硬编码的县和团队中拥有的 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
【问题讨论】:
标签: ios json uipickerview