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 ...
Es funktioniert perfekt für mich.
self.tableView.registerClass(UITableViewCell.self, forCellReuseIdentifier: "cell")
Genau wie ich es oben habe.
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 .
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
Für Swift 3 siehe dies. Es klappt!
In Ihrer Viewdidload-Funktion
self.tableView.register (UITableViewCell.self, forCellReuseIdentifier: "LabelCell")
Für Swift 4
self.tableView.register(UITableViewCell.self, forCellReuseIdentifier: "Cell")
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 {
}
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")