web-dev-qa-db-fra.com

UITableView - registerClass avec Swift

Quelqu'un d'autre a-t-il un problème avec la méthode tableView.registerClass avec Swift?

Il ne vient plus de compléter le code pour moi (je ne peux pas non plus l'utiliser si je le saisis manuellement) mais il est toujours dans les en-têtes ...

Code Completion

UITableView headers

52
Stuart Breckenridge

Cela fonctionne parfaitement pour moi. 

self.tableView.registerClass(UITableViewCell.self, forCellReuseIdentifier: "cell")

Exactement comme je l'ai ci-dessus. 

96
Woodstock

For Swift 2.2 Inscrivez-vous pour une cellule par défaut de la classe

self.tableView.registerClass(UITableViewCell.self, forCellReuseIdentifier: "DefaultCell")



For Swift 3.0 Inscrivez-vous pour la cellule par défaut de la classe

self.tableView.registerClass(UITableViewCell.self, forCellReuseIdentifier: "DefaultCell")



For Swift 2.2 Inscrivez-vous pour une cellule par défaut à partir de la base

self.tableView.registerNib(UINib(nibName: "CustomCellName", bundle: nil), forCellReuseIdentifier: "CustomCellIdentifer")



For Swift 3.0 Inscrivez-vous pour la cellule par défaut de la nib

self.tableView.registerNib(UINib(nibName: "CustomCellName", bundle: nil), forCellReuseIdentifier: "CustomCellName")

Remarque: La cellule créée par Storyboard est appelée cellule prototype et comporte une procédure permettant d’enregistrer une cellule prototype telle que Nib.And n'oubliez pas de définir l’identificateur de cellule comme ci-dessous .  enter image description here

13
Dinesh Katwal

Swift a encore une fois renommé 

tableView. register (UITableViewCell.self, forCellReuseIdentifier: "DefaultCell")

Je ne comprends vraiment pas pourquoi ils se sont tellement souciés de cette dénomination 

3
Qiulang

Pour Swift 3, reportez-vous à ceci. Ça marche!

A l'intérieur de votre fonction viewdidload

self.tableView.register (UITableViewCell.self, forCellReuseIdentifier: "LabelCell")

0
Amit Thakur

Pour Swift 4 

self.tableView.register(UITableViewCell.self, forCellReuseIdentifier: "Cell")
0
Rinju Jain

Swift 4 et 4.1. en faisant des méthodes génériques, il est très facile d’enregistrer et de retirer de la file le tableau.

       override func viewDidLoad() {
                super.viewDidLoad()
                self.tblView.register(CellProfileOther.self) // cell class name
       }
        func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
                let cell: CellProfileOther = tableView.dequeueReusableCell(forIndexPath: indexPath)
                return cell
            }
        extension UITableView {
        func register<T:UITableViewCell>(_: T.Type) where T: ReusableView, T: NibLoadableView {
                let bundle = Bundle(for: T.self)
                let nib = UINib(nibName: T.nibName, bundle: bundle)
                self.register(nib, forCellReuseIdentifier: T.defaultReuseIdentifier)
            }
        func dequeueReusableCell<T:UITableViewCell>(forIndexPath indexPath: IndexPath) -> T where T: ReusableView {
                guard let cell = self.dequeueReusableCell(withIdentifier: T.defaultReuseIdentifier, for: indexPath) as? T else {
                    fatalError("Could not dequeue cell with identifier: \(T.defaultReuseIdentifier)")
                }
                return cell
            }
        }

        protocol ReusableView: class {
            static var defaultReuseIdentifier: String { get }
        }

        protocol NibLoadableView: class {
            static var nibName: String { get }
        }

        extension ReusableView where Self: UIView {
            static var defaultReuseIdentifier: String {
                return String(describing: Self.self)
            }
        }    
        extension NibLoadableView where Self: UIView {
            static var nibName: String {
                return String(describing: Self.self)
            }
        }

   // Here is cell class 
    class CellProfileOther: UITableViewCell, ReusableView, NibLoadableView  {
    }
0
GSK