UITableView перезагрузить данные - PullRequest
27 голосов
/ 23 февраля 2011

Я делаю навигационное приложение для iphone.

один из моих контроллеров вида выглядит так:

@interface NewComputerViewController : UIViewController <UITableViewDelegate, UITableViewDataSource>

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

при загрузке представления я использую кнопку в верхней панели навигации для запуска функции loadStuff загрузки некоторых элементов в словарь.

Мой вопрос: как мне снова заполнить таблицупредставление в этом контроллере вида из этой функции loadStuff (которая принадлежит контроллеру представления)

Ответы [ 7 ]

53 голосов
/ 23 февраля 2011

Вы всегда можете использовать [tableView reloadData] метод!

Но если у вас есть данные, которые хранятся локально и загружаются новые данные с какого-либо сервера, вы можете перейти к:

[tableView beginUpdates];
[tableView insertRowsAtIndexPaths:*arrayOfIndexPaths* withRowAnimation:*rowAnimation*];
[tableView endUpdates];

А если вы хотите удалить существующую строку, вы можете использовать

[tableView beginUpdates];
[tableView deleteRowsAtIndexPaths:*arrayOfIndexPaths* withRowAnimation:*rowAnimation*];
[tableView endUpdates];
25 голосов
/ 23 февраля 2011

Попробуйте использовать [tableView reloadData]; (где tableView - имя переменной вашего экземпляра)

5 голосов
/ 18 сентября 2015

Убедитесь, что вы устанавливаете datasource и делегируете для tableView.

tableView.delegate = self;
tableView.dataSource = self;

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

В loadStuffметод, вызов:

[tableView reloadData];

В Swift, то же самое:

tableView.delegate = self
tableView.dataSource = self
tableView.reloadData()
5 голосов
/ 27 февраля 2012

Даже перезагрузка ...

[tableView reloadData];

не перезагрузит отредактированные строки / ячейку].Проверьте, что IBOutlet tableView не подключен в файле XIB .?

Это может быть одной из причин.

4 голосов
/ 11 июля 2013

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

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

У меня возникла эта проблема в следующей ситуации: у меня было представление таблицы, в котором отображались некоторые файлы в папке с документами.Затем я хотел удалить некоторые файлы, и я удалил их в папке документов, но они все еще появляются в моем списке.Я попробовал [tableView reloadData] и все другие предложенные ответы в этом посте, но все еще были в списке файлы.Когда я закрыл просмотр таблицы и открыл ее снова, список был в порядке.Зачем?Ну, потому что я заполнил NSArray всеми моими файлами -> это мой «источник» для tableView.Поэтому, когда я удаляю файл, мне нужно не только удалить файл в папке документов, но и удалить его из массива.-> Таким образом, я создал NSMutableArray, чтобы иметь возможность удалить его.Затем вызовите [tableView reloadData] и список в порядке.; -)

3 голосов
/ 23 февраля 2011

в конце вашей функции loadstuff перезагрузите содержимое таблицы ur, написав следующий код:

[tableView reloadData];
0 голосов
/ 18 сентября 2015

[tableView reloadData]; где tableview - это имя вашего UITableView

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