我正在解析一个json url并在网格视图中显示它。模拟器中的输出看起来像一个类似于imagepicker的图像网格。按下它导航到一个新视图的图像...代码工作很好,我可以在单击图像时在控制台中接收数据。问题是我无法导航到下一个视图..你们帮帮我了吗
- (void)viewDidLoad {
[super viewDidLoad];
jsonurl=[NSURL URLWithString:@"http://www.1040communications.net/sheeba/stepheni/iphone/stephen.json"];
jsonData=[[NSString alloc]initWithContentsOfURL:jsonurl];
jsonArray = [jsonData JSONValue];
items = [jsonArray objectForKey:@"items"];
// NSLog(@"hello:%@",items);
story = [[NSMutableArray array]retain];
media1 = [[NSMutableArray array]retain];
for (NSDictionary *item in items )
{
[story addObject:[item objectForKey:@"title"]];
[media1 addObject:[item objectForKey:@"media"]];
}
UIScrollView *view = [[UIScrollView alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
int row = 0;
int column = 0;
for(int i = 0; i < media1.count; i++) {
NSString *mel=[media1 objectAtIndex:i];
NSString *escapedURL = [mel stringByAddingPercentEscapesUsingEncoding:NSASCIIStringEncoding];
UIImage *thumb = [[UIImage alloc]initWithData:[NSData dataWithContentsOfURL:[NSURL URLWithString:escapedURL]]];
button = [UIButton buttonWithType:UIButtonTypeCustom];
button.frame = CGRectMake(column*100+24, row*80+10, 64, 64);
[button setImage:thumb forState:UIControlStateNormal];
[button addTarget:self
action:@selector(buttonClicked:)
forControlEvents:UIControlEventTouchUpInside];
button.tag = i;
[view addSubview:button];
if (column == 2) {
column = 0;
row++;
} else {
column++;
}
}
[view setContentSize:CGSizeMake(320, (row+1) * 80 + 10)];
self.view = view;
[view release];
}
- (IBAction)buttonClicked:(id)sender
{
UIImage *boy = [story objectAtIndex:button.tag];
Detailview *detailview=[[Detailview alloc]init];
[detailview initWithItem:boy];
self.detailviewController=detailview;
[self.navigationController pushViewController:self.detailviewController animated:YES];
}
答案 0 :(得分:2)
在buttonClicked中尝试此操作:
UIImage *boy = [story objectAtIndex:sender.tag];
您想要sender
的标记,而不是button
。创建按钮时,button
被设置为列表中的最后一个。 sender
是导致此事件的ui对象。
答案 1 :(得分:1)
嗨看起来像你使用旧的JSON解析器。 json有一个更好的解析器。
那是JSONKIT。
它只有2个文件(.h和.m),只需2行代码就可以获得与密钥对应的任何数据。你不必遍历你的items数组。你的性能率肯定会使用JSONKit。如果你试着使用这个让我,我可以使用jsonkit发布示例代码来解析json内容。
其次,对于您遇到的问题,您将图像放在UIScrollview中。你的uiscrollview没有将navigationcontrol推送到下一个视图。要么删除滚动视图并从rootviewcontroller推送,要么将navigationcontroller添加到uiscrollview。猜猜那是概率。试试吧。
一切顺利。