2015-06-03 6 views
0

У меня возникла проблема с размещением UITableViewController и одновременным обновлением.Реализация Pull-to-refresh сдвигает ячейки в UITableViewController вниз

Я реализовал pull для обновления и при реализации pull для обновления вызова API на сервер, и данные извлекаются и отображаются в списке таблиц. Проблема в том, что при попытке обновления таблица сдвигается вниз от своего фактического положения. Ниже мой код и скриншот.

viewDidLoad{ 

refreshControl = [[UIRefreshControl alloc] init]; 
    [refreshControl addTarget:self action:@selector(handleRefresh:) forControlEvents:UIControlEventValueChanged]; 
    [self.tableView addSubview:refreshControl]; 

} 

- (void)handleRefresh:(id)sender 
{ 
    // do your refresh here... 
    [self Data];//method to get data from server 
    [refreshControl endRefreshing]; 

} 

enter image description here

Любая помощь очень ценится.

ответ

0

UITableViewController имеет встроенный контроль обновления. Вы не хотите добавлять новый в качестве представления в представлении таблицы. Просто инициализируйте self.refreshControl.

viewDidLoad { 
    self.refreshControl = [[UIRefreshControl alloc] init]; 
    [self.refreshControl setTintColor:[UIColor lightGrayColor]]; 
    [self.refreshControl addTarget:self action:@selector(didRefresh:) forControlEvents:UIControlEventValueChanged]; 
} 

- (void)didRefresh:(UIRefreshControl *)sender { 
    [sender endRefreshing]; 
    [self Data]; 
} 
+0

спасибо, я применил ваш код, но теперь, когда я спускаюсь, в таблице нет индикатора. Метод didRefresh не вызывается при вытаскивании. – Daljeet

+0

Убедитесь, что вы не переопределяете refreshControl в своем подклассе. self.refreshControl реализован в UITableViewController, поэтому вам не нужно объявлять его в своем классе. – Max

+0

Этот рабочий, но didRefresh метод вызывает два раза при вытаскивании, что не решает мою проблему. – Daljeet

Смежные вопросы