Создание детализации детализации UITableView из JSON NSDictionary - PullRequest
0 голосов
/ 10 июня 2010

У меня масса проблем с поиском, как это сделать,

Я хочу показать это в UITableDetailView (стиль детализации) с каждым элементом в отдельной ячейке. Все, что я прочитал, показывает, как загрузить одно изображение в детали, а не как UITableView. Должен ли словарь иметь детей для правильной загрузки? Вот код для первого представления, создающего * dict из JSON rowArray.

Полагаю, что я ищу, это то, что нужно добавить в FollowDetailViewController.m, чтобы увидеть остальное содержимое * dict, поэтому при выборе строки загружается остаток * dict.

У меня есть rowArray, возвращающийся следующим образом:

'{loginName = Johnson;

memberid = 39;

имя = Крис;

age =;} и т. Д. И т. Д. *

Спасибо

// НАСТРОЙКА ТАБЛИЦЫ И КЛЕТОК

  - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {

    static NSString *CellIdentifier = @"Cell";

    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
    if (cell == nil) {
    cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:CellIdentifier] autorelease];
}
    NSDictionary *dict = [rowsArray objectAtIndex: indexPath.row];

    cell.textLabel.text = [dict objectForKey:@"name"];
    cell.detailTextLabel.text = [dict objectForKey:@"loginName"];
    cell.accessoryType = UITableViewCellAccessoryDisclosureIndicator;   
    return cell;
}

- (void)viewDidAppear:(BOOL)animated {
      [super viewDidAppear:animated];



- (void)viewDidLoad {
    [super viewDidLoad];

//GET JSON FROM WEBSERVICES:
    NSURL *url = [NSURL URLWithString:@"http://10.0.1.8/~imac/iphone/jsontest.php"];
    NSString *jsonreturn = [[NSString alloc] initWithContentsOfURL:url];

    NSData *jsonData = [jsonreturn dataUsingEncoding:NSUTF32BigEndianStringEncoding];
NSError *error = nil;

    NSDictionary * dict = [[CJSONDeserializer deserializer] deserializeAsDictionary:jsonData error:&error];
    if (dict)
    {
        rowsArray = [dict objectForKey:@"member"];
        [rowsArray retain];
    }


[jsonreturn release];

}

//GO  TO DETAIL VIEW:

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
    FollowingDetailViewController *aFollowDetail = [[FollowingDetailViewController alloc] initWithNibName:@"FollowingDetailView" bundle:nil];
    [self.navigationController pushViewController:aFollowDetail animated:YES];
}

1 Ответ

0 голосов
/ 11 июня 2010

Не используйте блокирующий вызов для получения JSON. Если ваша сеть работает медленно, ваше приложение будет зависать. Вы должны использовать асинхронный метод для получения данных.

Посмотрите на загрузку содержимого JSON в объект модели. Затем используйте массив моделей для питания вашего стола. После этого DidSelectRowAtIndexPath может передать экземпляр объекта модели в детальное представление либо с помощью пользовательского инициализатора, либо установив свойство после его выделения / инициализации. Ваш вопрос довольно сложно разобрать, поэтому я не уверен, что я обращаюсь к тому, что вы ищете. Взгляните на многочисленные примеры иерархий пользовательского интерфейса табличного представления на сайте разработчика.

...