2013-03-05 3 views
0

Мой UITableView пуст после заполнения массива. Но если я нажму кнопку «Назад» и вернусь в заполненную.UITableView пуст при загрузке из XML-массива

если я загрузить

xmlParser = [[XMLParser alloc] loadXMLByURL:@"http://google.com?xml.php?"];

в ViewDidLoad затем его штрафом, но это занимает несколько секунд, чтобы синтаксический анализатор.

Так я добавил эту линию в:

- (void)viewDidAppear:(BOOL)animated { 

    if ([[xmlParser branch] count] == 0) { 
     xmlParser = [[XMLParser alloc] loadXMLByURL:@"http://google.com?xml.php?"]; 

    } 
} 

Причина, почему то, потому что я хотел XML для парсера в то время как MapView нагрузки первой.

В моем основном контролере монитора есть как MapView, так и UITableView; оба установлены как делегаты.

в моем ParserXML.m (XML имеет свой собственный файл NSObject файл) У меня есть таблица перезагружается

- (void)parserDidEndDocument:(NSXMLParser *)parser { 


    NSLog(@"all done!"); 
    NSLog(@"stories array has %d items", [_branch count]); 

    tableViews = [Maplocator alloc]; 

    [tableViews.tableView reloadData]; 

} 

Мои аннотаций заполнены для MapView, но не мой UITableView, но если я нажимаю назад, а затем нажмите на карту опять же, его заполнили. (Но занимает несколько секунд)

+0

Вы уже назначили xmlParser? Потому что он должен указывать на 'viewDidAppear', должен вызывать исключение. – ipinak

+0

Кроме того, вы вызываете только 'alloc' внутри' parserDidEndDocument', почему? Я думаю, вы тоже должны инициализировать. – ipinak

+0

Вы называете [super viewDidAppear] ;? – iiFreeman

ответ

0

вещей, чтобы проверить

  • значения есть в массиве используется для источника данных из Tableview когда это нагрузка первый раз?
  • Настольные источники данных и методы делегирования должным образом реализованы или подключены в IBOutlets?

Если массив пуст проблема с анализатором на первый раз загрузке

сделать свой вызов в отдельном потоке, чтобы избежать блока UI и включает в себя деятельность в пользовательском интерфейсе при разборе завершен и данные там в вызове массива для перезагрузки

+0

Все заполнено. Я использую тот же массив, чтобы заполнить аннотацию, и они отображаются в MapView. Но когда я нажимаю UITableview, который скрыт при загрузке, его пустой. – Cliffordwh

+0

ЕСЛИ я нажимаю и возвращаюсь назад, ячейки заполняются. Это почти так, как будто массив пуст, потому что он ждет завершения анализатора. – Cliffordwh

+0

Отлаживайте свой код, чтобы увидеть, действительно ли ячейки заполнены. Кроме того, попробуйте изменить 'viewDidAppear' на' viewWillAppear', но вы должны иметь в виду, что будет удерживать поток пользовательского интерфейса, пока он не завершится. – ipinak

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