Есть ли у кого-нибудь проблемы с использованием метода tableView.registerClass
с Swift?
Он больше не подходит для завершения кода для меня (и я не могу использовать его, если его вручную набрал), но он все еще находится в заголовках...
Есть ли у кого-нибудь проблемы с использованием метода tableView.registerClass
с Swift?
Он больше не подходит для завершения кода для меня (и я не могу использовать его, если его вручную набрал), но он все еще находится в заголовках...
Он отлично работает для меня.
self.tableView.registerClass(UITableViewCell.self, forCellReuseIdentifier: "cell")
Точно так же, как у меня это выше.
Для Swift 2.2 Регистрация для ячейки по умолчанию из класса
self.tableView.registerClass(UITableViewCell.self, forCellReuseIdentifier: "DefaultCell")
Для Swift 3.0 Зарегистрируйтесь для ячейки по умолчанию из класса
self.tableView.registerClass(UITableViewCell.self, forCellReuseIdentifier: "DefaultCell")
Для Swift 2.2 Зарегистрируйтесь для ячейки по умолчанию из ниба
self.tableView.registerNib(UINib(nibName: "CustomCellName", bundle: nil), forCellReuseIdentifier: "CustomCellIdentifer")
Для Swift 3.0 Зарегистрируйтесь для ячейки по умолчанию из ниба
self.tableView.registerNib(UINib(nibName: "CustomCellName", bundle: nil), forCellReuseIdentifier: "CustomCellName")
Примечание. Созданная раскадкой ячейка называется ячейкой прототипа и имеет некоторую процедуру регистрации ячейки прототипа, такой как Nib.And Не забудьте установить идентификатор ячейки, как показано ниже.
Swift снова переименовал его в
tableView. register (UITableViewCell.self, forCellReuseIdentifier: "DefaultCell" )
На самом деле не понимаю, почему они так сильно беспокоились об этом конкретном наименовании
Для быстрой 4
self.tableView.register(UITableViewCell.self, forCellReuseIdentifier: "Cell")
Для быстрого 3 см. это. Он работает!
Внутри функции viewdidload
self.tableView.register(UITableViewCell.self, forCellReuseIdentifier: "LabelCell" )
Свифт 4 и 4.1. делая универсальные методы, очень легко зарегистрировать и удалить из таблицы ячейку.
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 {
}
Обновлено для Swift 5
Зарегистрируйте ячейку TableView в viewDidLoad Если вы используете ячейку по умолчанию
tableView.register(UITableViewCell.self, forCellReuseIdentifier: "MyTableCell")
Зарегистрируйте ячейку TableView в viewDidLoad Если вы используете пользовательскую ячейку Nib/XIB
tableView.register(UINib(nibName: "MyCustomCell", bundle: nil), forCellReuseIdentifier: "MyCustomCell")
Переключение порядка, в котором я назвал registerNib и registerClass, работал у меня!
По какой-то причине мое приложение разбилось, когда у меня было:
... registerNib.....
... RegisterClass...
Но все было нормально, когда у меня было:
... RegisterClass...
... registerNib.....
Надеюсь, что это поможет некоторым из вас.