2016-11-15 16 views
1

В настоящее время у меня база данных firebase с множеством сообщений в ней. Сообщения отображаются в UITableViewController в пользовательских ячейках.Загрузите 10 рядов ячеек за раз - быстро

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

Как я могу заставить его загружать только 10 сообщений за раз и загружать еще 10 при прокрутке вниз?

Это, как я получать мои сообщения:

func startObersvingDB() { 
     FIRDatabase.database().reference().child("feed-items").observeEventType(.Value, withBlock: { (snapshot: FIRDataSnapshot) in 
      var newUpdates = [Sweet]() 



      for update in snapshot.children { 
       let updateObject = Sweet(snapshot: update as! FIRDataSnapshot) 
       newUpdates.append(updateObject) 

      } 

      self.updates = newUpdates.reverse() 
      self.tableView.reloadData() 


     }) { (error: NSError) in 
      print(error.description) 
     } 
    } 

ответ

0

Рассмотрим следующий пример для получения поискового вызова для работы с Firebase: Swift iOS: Firebase Paging

И для загрузки более при прокрутке, попробуйте это в ViewController (Swift3):

extension MyViewController:UIScrollViewDelegate { 
func scrollViewDidScroll(_ scrollView: UIScrollView) { 
    let offset = scrollView.contentOffset.y 
    if offset > self.tableView.contentSize.height - 50 { //This value is adjustable 
     functionToPullMoreDatabaseItems() 
    } 
} 
} 
+0

Это может быть очень глупый вопрос, но какова высота содержимого, связанного с загрузкой дополнительных сообщений? :) –

+0

Когда contentOffset.y равно contentSize.height, то есть при прокрутке вниз. Вычитание 50 позволяет вам вызвать функцию, чтобы загрузить больше из базы данных, прежде чем вы достигнете дна, чтобы данные были там к тому времени, когда вы доберетесь до нее. – rmooney