Добавление элементов в табличное представление в popover - PullRequest
0 голосов
/ 14 декабря 2011

В моем приложении у меня есть массив, который создается в Main_View_Controller из json ответа в цикле: Main_View_Controller.m

NSMutableArray *Cities = [[NSMutableArray alloc] init];
while (ItemsFromParsedResponse = (NSDictionary *)[enumerator nextObject]) {
        AppDelegate *dataCenter = (AppDelegate*)[[UIApplication sharedApplication] delegate];
        dataCenter.CityLabel = [ItemsFromParsedResponse objectForKey:@"label"];
        [Cities addObject:dataCenter.CityLabel];
        dataCenter = nil;
    }
AppDelegate *dataCenter = (AppDelegate*)[[UIApplication sharedApplication] delegate];
dataCenter.CityInfo = Cities;

Этот массив должен быть представлен в Popover, содержащий TableView. Я пытаюсь делегировать массив для popover так же, как делегировать его в AppDelegate, но это не работает. Если я прочитал dataCenter.CityInfo в моем CityList_Popover_Contoller, он будет иметь значение nil.

CityList_Popover_Controller.m

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath     *)indexPath
{//some standard code

AppDelegate *dataCenter = (AppDelegate*)[[UIApplication sharedApplication] delegate];
cell.textLabel.text = [dataCenter.CityInfo objectAtIndex:indexPath.row];
[tableView reloadData];
return cell;
}

Как я могу загрузить CityInfo, только если он не равен нулю? И как я могу отслеживать изменения в этом массиве и динамически обновлять содержимое таблицы в соответствии с новыми данными в массиве?

Извините, если мой вопрос слишком прост, но я потратил много времени, чтобы заставить его работать.

Спасибо за любой совет!

1 Ответ

1 голос
/ 14 декабря 2011

Просто сработает проверка if:

AppDelegate *dataCenter = appDelegate;
if ([dataCenter.CityInfo objectAtIndex:indexPath.row])
{
     cell.textLabel.text = [dataCenter.CityInfo objectAtIndex:indexPath.row];
}
else 
{
     NSLog(@"Whoops, null data at row %i", indexPath.row);
}
// NEVER call reload data here, you are 
// already reloading data when this 
// method is called, will end up in corruption.
// [tableView reloadData];
return cell;
...