tableview не будет обновляться после добавления объектов в массив - PullRequest
1 голос
/ 14 января 2012

У меня есть табличное представление внутри всплывающего окна в моем главном представлении, которое является веб-браузером.Всякий раз, когда пользователь посещает веб-страницу, я хочу добавить ее в список недавно посещенных веб-сайтов.У меня есть код для добавления URL-адреса в виде строки в массив, который является источником данных для табличного представления.В табличном представлении отображается только первый посещенный сайт, и после этого ничего не будет показано.Однако я знаю, что сайты добавляются в массив, потому что массив показывает сайты, использующие операторы NSLog после добавления.Однако они все еще не будут отображаться в таблице.Кто-нибудь может мне помочь?

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

 - (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
{
    // Return the number of sections.
    return 1;
}

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{

    // Return the number of rows in the section.
    return [recentlyVisitedUrls count];
}

Ответы [ 4 ]

2 голосов
/ 14 января 2012

Также убедитесь, что вы возвращаете правильную длину вашего массива из – tableView:numberOfRowsInSection:

2 голосов
/ 14 января 2012

Попробуйте

[tableView reloadTable];

после добавления новых данных.

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

Если у вас большой стол, [tableView reloadData], вероятно, не идеально.Это также сбрасывает ваше представление к началу таблицы, что может быть или не быть желательным.Вы можете попробовать что-то вроде этого:

NSIndexPath *indexPath = [NSIndexPath indexPathForRow:_model.recordCount - 1 inSection:0];
[_tableView insertRowsAtIndexPaths:[NSArray arrayWithObject:indexPath] withRowAnimation:UITableViewRowAnimationRight];
[_tableView scrollToRowAtIndexPath:indexPath atScrollPosition:UITableViewScrollPositionBottom animated:NO];

Кстати, _model - это класс делегата данных для таблицы в примере.

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

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

Если вы не хотите обновлять анимацию, вы можете позвонить:

[self.tableView performSelectorOnMainThread:@selector(reloadData) withObject:nil waitUntilDone:NO]

Если вам нужна анимация, ее лучше прочитать: Руководство по программированию табличного представления для iOS, вам нужно Batch insert… часть.

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