Подтвердить что ты не робот

UITableView - registerClass с Swift

Есть ли у кого-нибудь проблемы с использованием метода tableView.registerClass с Swift?

Он больше не подходит для завершения кода для меня (и я не могу использовать его, если его вручную набрал), но он все еще находится в заголовках...

Code Completion

UITableView headers

4b9b3361

Ответ 1

Он отлично работает для меня.

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

Точно так же, как у меня это выше.

Ответ 2

Для 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 Не забудьте установить идентификатор ячейки, как показано ниже. введите описание изображения здесь

Ответ 3

Swift снова переименовал его в

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

На самом деле не понимаю, почему они так сильно беспокоились об этом конкретном наименовании

Ответ 4

Для быстрой 4

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

Ответ 5

Для быстрого 3 см. это. Он работает!

Внутри функции viewdidload

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

Ответ 6

Свифт 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  {
    }

Ответ 7

Обновлено для Swift 5

Зарегистрируйте ячейку TableView в viewDidLoad Если вы используете ячейку по умолчанию

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

Зарегистрируйте ячейку TableView в viewDidLoad Если вы используете пользовательскую ячейку Nib/XIB

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

Ответ 8

Переключение порядка, в котором я назвал registerNib и registerClass, работал у меня!

По какой-то причине мое приложение разбилось, когда у меня было:

... registerNib.....

... RegisterClass...

Но все было нормально, когда у меня было:

... RegisterClass...

... registerNib.....

Надеюсь, что это поможет некоторым из вас.