Я использую UIView tableFooterView из моего UITableView, чтобы показать ярлык «Загрузка большего» в нижней части таблицы. Когда отображается UIView в tableFooterView, мне нужно начать небольшую загрузку содержимого. Как узнать, когда отображается TableFooterView?UITableView: Выполнить код при отображении tableFooterView?
ответ
Вместо того, чтобы определить, когда вид сноски покажет вам могли чек, когда последняя строка таблицы запрашивается и загрузить данные затем. Число пользователей, прокручивающихся до последней строки без прокрутки вниз, чтобы увидеть нижний колонтитул, вероятно, очень мало. Эффект будет таким же, т. Е. Вы знаете, когда пользователь прокручивается донизу, и вы должны загружать больше данных.
Это может быть легко реализовано в tableView:cellForRowAtIndexPath:
. Следя за тем, что IndexPath является последним, и обновляя его каждый раз, когда новые строки добавляются или удаляются, вы можете просто проверить, является ли IndexPath запрашиваемой ячейки такой же, как IndexPath последней строки, и запускает ленивую загрузку больше данных оттуда, так же, как вы сейчас это делаете.
Поскольку tableFooter, как вы говорите, UIView, он обрабатывает чертеж в drawRect:. Если вы перепишете, вы можете получить уведомление.
Редактировать: старый ответ был неправильным.
Вы можете преобразовать рамки нижнего колонтитула в координаты окна и сравнить их. Если нижний колонтитул скрыт, то предполагается, что он имеет координаты Y начала координат> 480 (для портретного режима), когда появится нижний колонтитул, а затем координаты начала координат < 480. Вы можете сделать сравнение в методе didScroll.
Спасибо, надеюсь, это поможет вам.
метод См convertRect:toView:
Если ваш tableFooterView
наблюдает изменения в contentOffset
собственности стола (и, возможно, также изменения в contentSize
имущества таблицы), вы можете точно рассчитать, когда он прокручивается в поле зрения со следующими переменными:
tableView.contentOffset.y
- вертикальная величина, на которую происхождение представления содержимого является смещение от начала координат окна просмотра прокруткиtableView.contentSize.height
- высота представления содержимогоtableView.bounds.size.height
- Высота стола границ
Если вертикальное смещение содержимое + высота таблицы границ превышает высоту размера содержимого таблицы, мы можем предположить, что сноска теперь в поле зрения.
Вы можете обернуть это в оператор if и использовать его для отправки уведомления.После этого вы можете сделать дальнейшие испытания, чтобы сделать футер динамически растягивать тоже или другие желаемые результаты:
if((tableView.contentOffset.y + tableView.bounds.size.height) > tableView.contentSize.height){
//send notification, dynamic resizing, etc...`
}
Вот небольшой фрагмент кода в действии:
// Set up an observer for changes in the table's contentOffset or contentSize.
// This can be done during initialisation of the tableFooterView
[tableView addObserver:self
forKeyPath:@"contentOffset"
options:NSKeyValueObservingOptionNew
context:NULL];
[tableView addObserver:self
forKeyPath:@"contentSize"
options:NSKeyValueObservingOptionNew
context:NULL];
// Further down in code, listen for the changes:
- (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object
change:(NSDictionary *)change context:(void *)context {
if ([keyPath isEqualToString:@"contentOffset"] ||
[keyPath isEqualToString:@"contentSize"]) {
if((tableView.contentOffset.y + tableView.bounds.size.height) > tableView.contentSize.height){
// the tableFooterView should now be in view
[[NSNotificationCenter defaultCenter]
postNotificationName:@"scrollToLoadNeedsLoad"
object:self];
// dynamically change the footer here (ideal for making it stretch with the table)
}
}
}
Вы можете реализовать это в контроллере представления, который содержит ссылку на таблицу, или вы можете инкапсулировать ее в свой собственный ScrollToLoadView.
Overkill. Путь к ленивой загрузке или тому, что вы хотите, когда запрашивается последняя ячейка таблицы, - это путь. – Daniel
- 1. UITableView tableFooterView weird resizing
- 2. Убрать uitableview tablefooterview separator
- 3. UITableView tableFooterView не отображается
- 4. Javascript - выполнить код при отображении: block
- 5. Смещение при отображении UITableView
- 6. Очень странное поведение в таблице UITableView tableFooterView
- 7. Выполнить селектор при отображении ViewController?
- 8. UITableView tableFooterView с экрана для iOS6?
- 9. UITableView генерирует исключение при добавлении UIView в tableFooterView
- 10. UITableView запаздывает при отображении изображений Swift
- 11. Обновить UITableView tableFooterView без перезагрузки всей таблицы данных
- 12. tableHeaderView tableFooterView
- 13. Установка метки в таблицу UITableView tableFooterView - с автозапуском
- 14. Определить, когда UITableView TableHeaderView или TableFooterView отображается на экране
- 15. UITableView contentSize не обновляется после изменения размера tableHeaderView или tableFooterView
- 16. Выполнить код при сборке
- 17. Obj-C, настраивая высоту моего UITableview при отображении iAds
- 18. Проблемы с изменением вложений UITableView при отображении его клавиатуры
- 19. UITableView reposition при отображении клавиатуры с использованием ограничений
- 20. UITableView в пользовательский делегат не дозвонились при отображении из UIPopoverController
- 21. Отключить кнопки при отображении клавиатуры
- 22. Tableview не появился до установки tableFooterView
- 23. UITableView Редактировать/выполнить события
- 24. UITableView's tableFooterView отображается очень странным образом
- 25. UITableViewCell не обновляется при отображении?
- 26. Выполнять составной компонентный код только при его отображении
- 27. Невозможно выполнить работу UiTableView
- 28. выполнить код при загрузке представления
- 29. Выполнить код при выходе приложения
- 30. Выполнить код при подтверждении отгрузки
Проголосовало за то, что так я его осуществил один раз - кажется мне самым чистым решением. –
Это именно то, что я сейчас делаю сейчас. Я просто буду делать это так. – dhrm
Я тоже делаю то же самое, но это лучший способ? – Alupotha