2017-03-22 8 views
4

私はSwiftで新しく、配列を使用して無限のスクロールを作成します。ここでは、私が方法がわからない私は、配列の最初の10個の項目を表示したいと私はTableViewControllerの底に午前とき、それはなど、次の10の項目をロードする私のクラスTableViewControllerUITableViewと配列を持つ無限スクロール

class TableViewController: UIViewController, UITableViewDelegate, UITableViewDataSource { 
    var legumes: [String] = ["Eggs", "Milk", "Chocolat", "Web", "Miel", "Pop", "Eco", "Moutarde", "Mayo", "Thea", "Pomelade", "Gear", "Etc" , "Nop", "Dews", "Tout", "Fun", "Xen" , "Yoga" ] 
    override func viewDidLoad() { 
    super.viewDidLoad() 
    self.tableView.delegate = self 
    self.tableView.dataSource = self 
    func numberOfSections(in tableView: UITableView) -> Int { 
     return 1 
    } 
    func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int { 
     return self.legumes.count 
    } 
    func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { 
     let cell = self.tableView.dequeueReusableCell(withIdentifier: "Cell", for: indexPath) as! ImageTableViewCell 
     return cell 
    } 
} 

ですそうするためには、私はGitHub上で多くのコードを見ていますが、それらを実装する方法はわかりません。

ありがとうございました。

+0

を望むようにPagingTableView

class MainViewController: UIViewController { @IBOutlet weak var contentTable: PagingTableView! var legumes: [String] = ["Eggs", "Milk", "Chocolat", "Web", "Miel", "Pop", "Eco", "Moutarde", "Mayo", "Thea", "Pomelade", "Gear", "Etc" , "Nop", "Dews", "Tout", "Fun", "Xen" , "Yoga" ] override func viewDidLoad() { super.viewDidLoad() contentTable.dataSource = self contentTable.pagingDelegate = self } } extension MainViewController: UITableViewDataSource { func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int { return legumes.count } func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { let cell = tableView.dequeueReusableCell(withIdentifier: "Cell", for: indexPath) as! ImageTableViewCell guard legumes.indices.contains(indexPath.row) else { return cell } cell.content = legumes[indexPath.row] return cell } } extension MainViewController: PagingTableViewDelegate { func paginate(_ tableView: PagingTableView, to page: Int) { contentTable.isLoading = true DispatchQueue.main.asyncAfter(deadline: .now() + 1) { self.legumes.append(contentsOf: legumes) self.contentTable.isLoading = false } } } 

が動作するのpaginate関数を変更し使用することを検討してください。迅速なテーブルビュー遅延読み込みを検索して、より多くの例を得ることができます。 – wyoskibum

答えて

0

説明している内容は、paginationと呼ばれています。あなたはこのような何かをする必要があります

/* Number of page you're loading contents from */ 
var pageIndex: Int = 1 

override func scrollViewDidScroll(scrollView: UIScrollView) { 
    let offsetY = scrollView.contentOffset.y 
    let contentHeight = scrollView.contentSize.height 

    if offsetY > contentHeight - scrollView.frame.size.height { 
     /* increment page index to load new data set from */ 
     pageIndex += 1 

     /* call API to load data from next page or just add dummy data to your datasource */ 
     /* Needs to be implemented */ 
     loadNewItemsFrom(pageIndex) 

     /* reload tableview with new data */ 
     tableView.reloadData() 
    } 
} 
+0

関数loadNewItemsとは何ですか?私はそれがどのように動作するのか分かりません。ご意見ありがとうございました – Yapoto

+0

@ Yapotoあなたはそれを実装すべきです。サーバーから新しいデータをロードしたり、ダミーデータをデータソースに追加します( 'array + = array'など)。これはアルゴリズムであり、実装は異なる場合があります。 'reloadData'を使った –

+0

は、スクロールを一番上にリセットするので遅延読み込みでは機能しません。 – Sulthan

0

はあなたが遅延ロードと呼ばれてやろうとしているもの

関連する問題