2017-09-27 4 views
0

J'ai un UITableView et j'inclue un fichier nib de mon UIView personnalisé dans une fonction de délégué "CellForRowAt" de tableView qui produit jerk tout en faisant défiler. Par exemple:Y compris fichier nib pour UIView personnalisé dans CellForRowAt produisant jerk tout en défilant

func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { 
     let cell = tableView.dequeueReusableCell(withIdentifier: 
     "cell", for: indexPath) as! CustomCell 
     let customView: CustomView = Bundle.main.loadNibNamed("CustomView", owner: 
     self, options: nil)![0] as! customView 
     cell.customViewPlacement.addSubview(customView) 
     return cell 
} 

Comment puis-je corriger le défilement et quel est le problème dans mon code? Merci

Répondre

0
cell.customViewPlacement.addSubview(customView) 

Ce n'est pas comment créer la cellule et de réutiliser dans votre cellForRow, vous créez essentiellement nouvelle vue et de l'ajouter à chaque fois que la molette de votre cellule (continuer à faire en double), faites ainsi saccades, vous devez créer votre nib cellulaire avec ce point de vue, et d'enregistrer votre fichier nib dans viewDidLoad comme:

tableView.register(UINib(nibName: "CustomCell", bundle: nil), forCellReuseIdentifier: "CustomCell") 

et cellForRow juste DEQUEUE comme normal:

let cell = tableView.dequeueReusableCell(withIdentifier: "CustomCell", for: indexPath) as! CustomCell 

Si vous avez plusieurs types de cellules différentes, créez une classe de cellules multiples, ne créez pas de nouvelle vue et ajoutez-la à la cellule actuelle

+0

Non, vous vous trompez. Je ne crée pas la plume pour tableViewCell. customView est la vue que je place dans la cellule. let customView: CustomView = Bundle.main.loadNibNamed ("CustomView", propriétaire: self, options: nil)! [0] as! customView // ceci est mon customView ............ cell.customViewPlacement.addSubview (customView)// c'est ici que je place mon customView. –

+0

Cest là où vous avez tort, vous êtes supposé créer la pointe qui contient la cellule avec cette vue que vous dites, ne pas les séparer, si vous ne pouvez pas le faire pour une raison quelconque, ajoutez la vue à la cellule dans la classe 'CustomCell'' awakeFromNib', pas de 'cellForRow' – Tj3n