2016-01-29 4 views
2

У меня очень странная проблема с моим табличным представлением для UITableViewController. Тестирование в iOS 9.2iOS UITableViewController даже небольшая прокрутка наверху UIRefreshControl

Я включил «обновление» для UITableViewController в раскадровке и привязал его IBAction для valueChanged. Обратите внимание, что в представлении таблицы есть заголовки разделов, использующие стиль «Обычный» и пользовательскую высоту 45.

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

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

Также обратите внимание, что даже если он начинает вращаться полностью и автоматически заканчивается, но мой метод, связанный в IBAction для управления обновлением, на самом деле не срабатывает.

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

Обратите внимание, что в моем коде у меня нет «beginRefreshing» в любом месте. Кроме того, у меня нет каких-либо «scrollViewDidScroll» или «scrollViewDidDrag» и т. Д. Методов для запуска управления обновлением.

Я никогда не видел такого рода проблемы.

Я не могу использовать пользовательский ViewController с пользовательским TableView по другим причинам, поэтому вам нужно исправить это.

Любая помощь будет оценена!

ответ

0

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

1

Вы можете добавить UIRefreshControl программно, и это сработает правильно. Вот простой пример, где UIRefreshControl не IBOutlet (я не включал методы DATASOURCE Tableview):

#import "ViewController.h" 

@interface ViewController() <UITableViewDataSource> 
@property (weak, nonatomic) IBOutlet UITableView *tableView; 
@property (strong, nonatomic) UIRefreshControl *refreshControl; 
@end 

@implementation ViewController 

- (void)viewDidLoad { 
    [super viewDidLoad]; 

    self.refreshControl = [[UIRefreshControl alloc] init]; 
    self.refreshControl.backgroundColor = [UIColor lightGrayColor]; 
    [self.refreshControl addTarget:self action:@selector(actionRefresh:) forControlEvents:UIControlEventValueChanged]; 
    [self.tableView addSubview:self.refreshControl]; 
} 

- (void)actionRefresh:(id)sender { 
    dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(2 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{ 
     [self.refreshControl endRefreshing]; 
    }); 
} 

// ...UITableView dataSource methods 

@end 
+0

Я действительно имел это так раньше и имел ту же проблему. Поэтому я решил переключиться на раскадровку, чтобы «обновить» и удалить код и еще одну проблему :( –

+0

Вот тестовый проект, где только тот же код, что и в ответе, и он отлично работает. Https: //www.dropbox. com/sh/jka44ujmintnh5x/AABDtzyW3GO0Al9PuoNtrFlea? dl = 0 – shpasta

+0

Я не сомневаюсь, что ваш код не работает. У меня есть другие tableviewccontrollers, где это работает правильно. Только в этом случае это не –

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