Прокрутки UITableView для обновления клеток делает прыжок
Я реализовал pull To refresh в табличном представлении, которое является подвидом к моему основному виду следующим образом:
UITableViewController *tableViewController = [[UITableViewController alloc] init];
tableViewController.tableView = self.tableView;
self.refreshControl = [[UIRefreshControl alloc] init];
[self.refreshControl addTarget:self action:@selector(refresh:) forControlEvents:UIControlEventValueChanged];
tableViewController.refreshControl = self.refreshControl;
Это обновляет таблицу и все в порядке, проблема, с которой я сталкиваюсь, когда я касаюсь таблицы, чтобы перетащить ячейки, кажется, случайным образом сдвигаются вверх над экраном. Это происходит, когда я касаюсь и перетаскиваю из середины экрана вниз, или если я тяну до того, как ячейки сдвигаются обратно в свое нормальное положение. Вот несколько снимков экрана, чтобы лучше нарисовать картину. Имейте в виду, что все они берутся после того, как я тяну вниз, но клетки сдвигаются вверх.
Должно выглядеть так:
На самом деле выглядит так после прыжка клеток:
1 ответ:
Для всех, кто может иметь эту проблему или проблему, подобную этой, я нашел способ заставить свиток обновляться, чтобы работать очень гладко и не вызывать проблем, которые у меня были. Я использую фактический UITableViewController теперь вместо встроенного UITableView, который помог с некоторыми проблемами прокрутки, но у меня все еще была проблема, когда вместо анимации закрытия значка обновления (таблица скользит вверх, чтобы покрыть вращающийся круг) он просто закрылся мгновенно и казался очень резким. Я положил свой освежитель логика на заднем плане, пусть она закончит, а затем закончит освежать. Моя структура кода выглядит следующим образом:
- (void)viewDidLoad { //set up refreshcontrol to call my refresh method } - (void)refresh { [self performSelectorInBackground:@selector(getUpdatedInfo) withObject:nil]; }
Выполняется обновление информации, и мой TableViewController является делегатом моего класса, который получает обновленную информацию. Когда вся информация получена и обновление завершено, я вызываю метод делегата в моем классе refreshing TableViewController, который помещает полученный массив в таблицу, обновляет таблицу и завершает обновление.
- (void)didFinishingUpdatingWithArray:(NSArray *)array { //configure table sections //Save the data [self.tableview reloadData]; [self.refreshControl endRefreshing]; }