Split View iPad - Перезагрузить данные таблицы? - PullRequest
0 голосов
/ 24 мая 2011

Я создал проект разделения представления в XCode, и я использую NSXMLParser для извлечения данных и файла XML в Интернете. Данные поступают нормально и предполагают правильную структуру, но когда я проверял их, я обнаружил, что UITableViewDelegate методы вызываются до мой NSXMLParser завершил свой прогон данных, в результате чего появилась пустая таблица , Я не вижу какой-либо ссылки в предопределенных классах на self.tableView, как процитировано во многих вопросах StackOverflow. Как бы я мог перезагрузить данные в RootViewController после того, как NSXMLParser завершит свою работу?

РЕДАКТИРОВАТЬ Я установил несколько NSLog точек в своем коде, и по выводу этой консоли видно, что методы UITableViewDelegate вызываются до того, как массив получит какой-либо объект

2011-05-23 19:41:17.591 appname[2804:207] numberOfSectionsInTableView array count: 0
2011-05-23 19:41:17.596 appname[2804:207] numberOfSectionsInTableView array count: 0
2011-05-23 19:41:17.600 appname[2804:207] numberOfSectionsInTableView array count: 0
2011-05-23 19:41:17.610 appname[2804:7303] callParse array count: 2
2011-05-23 19:41:19.911 appname[2804:207] hudWasHidden array count: 2

EDIT2 Позвольте мне уточнить больше: как я могу создать какое-то соединение с UITableView в левой части окна, созданного с помощью шаблона Split-View? Он не создан в Интерфейсном Разработчике, поэтому я не могу сделать IBOutlet.

Ответы [ 3 ]

1 голос
/ 24 мая 2011

Если у вас нет указателя на tableView, просто используйте делегирование или уведомления, чтобы сообщить вашему RootViewController о перезагрузке данных.

Простым подходом здесь были бы уведомления, я думаю.Проверьте официальную документацию .

В двух словах, вы добавляете внешний вид уведомлений, регистрируясь для них следующим образом в RootViewController:

[[NSNotificationCenter defaultCenter] addObserver:self
    selector:@selector(xmlDidFinish:)
    name:@"finishXML" object:nil];

И в вашем XMLParserвы фактически публикуете уведомление, когда закончите, как это

[[NSNotificationCenter defaultCenter]
    postNotificationName:@"finishXML" object:self];
0 голосов
/ 24 мая 2011

Я не нашел ответа на этот вопрос, я создал новый проект и выбрал другой подход.

0 голосов
/ 24 мая 2011

UITableView имеет метод reloadData, который снова вызовет методы делегата tableViews (таким образом, повторно заполняя таблицу). Когда анализатор завершит свою работу, вызовите [tableView reloadData], где tableView следует заменить на ваш экземпляр UITableView.

...