webentwicklung-frage-antwort-db.com.de

UITableView - registerClass mit Swift

Hat jemand anderes ein Problem mit der tableView.registerClass-Methode mit Swift?

Es kommt für mich nicht mehr in Code-Vervollständigung (ich kann es auch nicht verwenden, wenn es manuell eingegeben wird), aber es ist immer noch in den Kopfzeilen ...

Code Completion

UITableView headers

52

Es funktioniert perfekt für mich. 

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

Genau wie ich es oben habe. 

96
Woodstock

Für Swift 2.2 Für Standardzelle aus Klasse registrieren

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



Für Swift 3.0 Für Standardzelle aus Klasse registrieren

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



Für Swift 2.2 Für Standardzelle von Feder registrieren

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



Für Swift 3.0 Für Standardzelle von Feder registrieren

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

Hinweis: Eine im Storyboard erstellte Zelle wird als Prototypzelle bezeichnet und muss wie folgt registriert werden. Vergessen Sie nicht, die Zellen-ID wie folgt festzulegen . enter image description here

14
Dinesh Katwal

Swift hat es noch einmal umbenannt in 

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

Verstehe wirklich nicht, warum sie sich so sehr um diesen Namen gekümmert haben 

3
Qiulang

Für Swift 3 siehe dies. Es klappt!

In Ihrer Viewdidload-Funktion

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

0
Amit Thakur

Für Swift 4 

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

Swift 4 und 4.1. Mit generischen Methoden lassen sich Tabellenzellen sehr einfach registrieren und ausreißen.

       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

Aktualisiert für Swift 5

Registrieren Sie die TableView-Zelle in viewDidLoad. Wenn Sie Standardzelle verwenden

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

Registrieren Sie die TableView-Zelle in viewDidLoad. Wenn Sie Benutzerdefinierte Nib/XIB-Zelle verwenden

tableView.register(UINib(nibName: "MyCustomCell", bundle: nil), forCellReuseIdentifier: "MyCustomCell")
0
swiftBoy