web-dev-qa-db-fra.com

UITableView charger plus lors du défilement vers le bas

Je souhaite charger plus de données et créer des cellules supplémentaires lorsque l'utilisateur fait défiler l'écran jusqu'en bas. J'utilise les données JSON et MySql.

func dataJsonFromURL(url:String)->NSArray
{
    if let data = NSData(contentsOfURL: NSURL(string: url)!) {
        return ((try! NSJSONSerialization.JSONObjectWithData(data, options: [])) as! NSArray)
    }
    else{
        return data
    }
}

func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell
{
    let cell = tableView.dequeueReusableCellWithIdentifier("NCell", forIndexPath: indexPath) as! TableViewCell22

    cell.backgroundColor = UIColor .clearColor()

    let mindata = (data[indexPath.row] as! NSDictionary)
}
33
osama makki

vous devez utiliser cette méthode

override func tableView(tableView: UITableView, willDisplayCell cell: UITableViewCell, forRowAtIndexPath indexPath: NSIndexPath) {
            let lastElement = dataSource.count - 1
            if indexPath.row == lastElement {
                // handle your logic here to get more items, add it to dataSource and reload tableview
                }    
        }
53
Robert TuanVu

Xcode 8, Swift

func tableView(_ tableView: UITableView, willDisplay cell: UITableViewCell, forRowAt indexPath: IndexPath) {
    let lastElement = dataSource.count - 1
    if !loadingData && indexPath.row == lastElement {
        indicator.startAnimating()
        loadingData = true
        loadMoreData()
    }
}
17
Abdul Karim

j'ai utilisé cette méthode et ça marche pour moi

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

    if offsetY > contentHeight - scrollView.frame.size.height {


        loadMoreDataFromServer()
        self.tableView.reloadData()
    }
}
3
Muhammed

Vous avez besoin d'une méthode de délégué très pratique:

func tableView(tableView: UITableView, willDisplayCell cell: UITableViewCell , forRowAtIndexPath indexPath: NSIndexPath) {

}

Cette méthode vous donne la ligne actuellement affichée. Utilisez la propriété indexPath fournie pour déterminer le moment où vous approchez du bas de la table. Puis obtenez plus de JSON et rechargez la table.

1
Casey Wagner

Sa pagination appelée à tableview. La pagination permet d’afficher des données volumineuses sur une table de manière efficace. Voici vous pouvez obtenir un tutoriel de Nice pour objective-c et pour Swift, regardez ceci Question .

Et vous pouvez télécharger un exemple dans Swift de Ici .

0
sohan vanani