парсинг JSON и отображение в виде сетки - PullRequest
0 голосов
/ 03 августа 2011

Я анализирую URL-адрес json и показываю его в виде сетки. Выходной сигнал в симуляторе выглядит как сетка изображений, подобная 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];
}

enter image description here

Ответы [ 2 ]

2 голосов
/ 03 августа 2011

Попробуйте это в своей кнопке. Кликнули:

UIImage *boy = [story objectAtIndex:sender.tag];

Вы хотите тег sender, а не button.button был установлен последним в вашем списке, когда ваши кнопки были созданы.sender - это объект пользовательского интерфейса, вызвавший это событие.

1 голос
/ 03 августа 2011

Привет выглядит как ваш, используя старый анализатор JSON. есть гораздо лучший парсер для json.

вот JSONKIT .

Он имеет всего 2 файла (.h и .m) и всего за 2 строки кода вы можете получить любые данные, соответствующие ключу. Вы не должны перебирать массив элементов. Ваша производительность будет определенно увеличена при использовании JSONKit. если вы попробуете использовать это, позвольте мне опубликовать примеры кодов для анализа содержимого json с помощью jsonkit.

Во-вторых, для решения проблемы вы помещаете изображения в UIScrollview. Ваш uiscrollview не имеет навигационного контроля, который будет перемещен к следующему представлению. либо удалите представление прокрутки и нажмите из rootviewcontroller, либо добавьте навигационный контроллер в uiscrollview. Угадай, вот и все. попытайся.

всего наилучшего.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...