2011-12-14 4 views
0

пирог В моем приложении у меня есть массив, которые создают в 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; 

Этот массив должен быть представлен в поповер, содержащий TableView. Я пытаюсь делегировать массив, чтобы он появился так же, как делегировать его 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; 
} 

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

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

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

ответ

1

Просто простой, если проверка должна работать:

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; 
+0

К сожалению, это не так. Я забыл сказать: метод, который заполняет массив, вызывает -editingChaged событие TextField, в котором пользователь пишет город. Новый ответ с сервера приходит и заполняет массив новыми данными. – Akki

+0

@Akki, тогда, когда вы получите ответ от сервера, просто вызовите [tableView reloadData] в методе делегата или что-то в этом роде. –

Смежные вопросы