Заголовки разделов в UITableView при изменении вставки таблицы
Я внедрил "Pull to refresh" в моем TableView, как iPhone приложение Twitter или Facebook.
В моем табличном представлении есть разделы с заголовками. Когда tableView находится в "режиме обновления", поэтому, когда я вытащил tableView для обновления, я установил contentInset tableView для отображения tableView определенным образом. В этот момент, если я нажимаю tableView вверх, заголовки UITableView больше не прокручиваются вверху UITableView. Смотрите следующие скриншоты:
![screenshot 1]()
![screenshot 2]()
Как я могу исправить это, чтобы прокручивать заголовки, как ожидалось?
Спасибо!
Ответы
Ответ 1
У меня была такая же проблема при использовании contentInset и исправлена ее добавлением кода в scrollViewDidScroll: для динамического обновления содержимого в течение "загрузки".
if( refreshState == kLoading ) {
if( scrollView.contentOffset.y >= 0 )
scrollView.contentInset = UIEdgeInsetsZero;
else
scrollView.contentInset = UIEdgeInsetsMake( MIN( -scrollView.contentOffset.y, kPullHeight ), 0, 0, 0 );
}
Ответ 2
При этом обычно я использую заголовок таблицы в UITableView:
@property(nonatomic, retain) UIView *tableHeaderView
... вместо contentInsets. Было много ошибок с contentInsets вплоть до iOS 2.x дней, и я не уверен, что они все исправлены. Есть ли причина, по которой вы не можете использовать заголовок таблицы?
Ответ 3
Попробуйте этот способ, чтобы добавить контроллер просмотра.
- Создайте контроллер табличного представления и добавьте его в качестве дополнительного представления существующего контроллера представления.
-
Затем назначьте контроллеры табличного представления и обновления в свойства контроллера таблицы.
UITableViewController *newTableViewController = [[UITableViewController alloc] init];
newTableViewControler.tableView = <yourTableView>;
<yourRefreshController> = [[UIRefreshControl alloc] init];
[<yourRefreshController> addTarget:self
action:@selector(refreshTableView:)
forControlEvents:UIControlEventValueChanged];
newTableViewController.refreshControl = _chatListRefreshControl;
[self addChildViewController:newTableViewController];