Обновление данных UItableView из часто меняющегося NSArray - PullRequest
2 голосов
/ 01 января 2012

У меня UITableView, и я читаю данные из веб-службы. данные из веб-службы могут измениться в любое время, поэтому мне приходится периодически обновлять свои данные.

Мне удалось обновить данные и сохранить их в NSArray, но UITableView не будет отображать эти данные.

я пытался

[myTableView reloadData];

но это не имеет никакого эффекта.

EDIT:

Я реализовал все методы для загрузки данных из NSArray в UiTableView. это работает, когда NSArray инициализируется в ViewDidLoad.

но если NSArray изменилось во время работы приложения, UITableView не отобразит эти изменения.

Ответы [ 2 ]

3 голосов
/ 01 января 2012

Вам необходимо реализовать протокол делегата UITableViewDataSource, в частности - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath

. Используйте этот метод для настройки ячейки.Вы можете использовать свойство row indexPath, чтобы определить, какую ячейку вы настраиваете, и предоставить ей данные из вашего массива.

Например,

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil) {
cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier];
}
id item = [dataArray objectAtIndex:indexPath.row]; // Whatever data you're storing in your array
cell.textLabel.text = [item description]; // Substitute this for whatever you want to do with your cell.
}

РЕДАКТИРОВАТЬ:

reloadData следует позвонить
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView и
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
чтобы увидеть, есть ли какие-либо ячейки, которые нужно нарисовать.Убедитесь, что вы также реализовали эти методы и возвращаете ненулевые значения, иначе ваше табличное представление не будет пытаться нарисовать какие-либо ячейки, и - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath не будет вызываться.

Parse
Вас также может заинтересовать эта библиотека , которая утверждает, что сделать удаленные таблицы, управляемые данными, намного проще.

0 голосов
/ 01 января 2012

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...