tableviewで一番下に来た時にデータの再読み込みの方法を知りたいです。
プログラムを実行すると開始画面で以下が出力されます。
swift 4, xcode 9.2を使用しています。
indexPath = 0 indexPath = 1 indexPath = 2 indexPath = 3 indexPath = 4 indexPath = 5 indexPath = 6
セルの高さを self.view.bounds.height*0.4 で定義していることから、
実際に開始画面で表示されているのセルの数は3つですので、
indexPath=0~2 が出力されるのを期待しているのですが、swift4だと不可能なのでしょうか?
何か足りない部分などあったら教えていただきたいです。
また、一番下のscrollViewDidScrollを利用して、dataの再読み込みを試しましたが、
tableviewの表示がうまく行きませんでした。
何か改善策などあったら教えていただきたいです。
以下、実行プログラムです。
import UIKit class favoriteViewController: UIViewController,UITableViewDelegate,UITableViewDataSource{ var data = ["ピカチュウ", "コラッタ", "イーブイ", "カビゴン", "ポッポ","dcescds","decs"] @IBOutlet weak var favoriteTV: UITableView! @IBAction func test(_ sender: Any) { self.favoriteTV.reloadData() } override func viewDidLoad() { super.viewDidLoad() favoriteTV.dataSource = self favoriteTV.delegate = self } override func didReceiveMemoryWarning() { super.didReceiveMemoryWarning() // Dispose of any resources that can be recreated. } } extension favoriteViewController:UIScrollViewDelegate{ func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int { return data.count } func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat { return self.view.bounds.height*0.4 } func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { let i = indexPath.row print("indexPath = (i)") // i < data.count-2 ★右の条件で呼び出ししたい。★ return UITableViewCell() } func tableView(_ tableView: UITableView,didSelectRowAt indexPath: IndexPath) { print("セルをタップしました") tableView.deselectRow(at: indexPath, animated: true) } // func scrollViewDidScroll(_ scrollView: UIScrollView) { // var a = scrollView.contentSize.height - scrollView.contentOffset.y - scrollView.frame.height // // } }
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/10/14 13:43
2019/10/14 13:54 編集