2016-12-16 8 views
0

Я использую пользовательскую ячейку в моем TableView, но когда я запускаю, я получаю ошибку, о которой я упомянул в своем вопросе.Я получаю сообщение об ошибке - nib должен содержать ровно один объект верхнего уровня, который должен быть экземпляром UITableViewCell '"

self.districtTableView.register(UINib(nibName: "PlaceCollectionViewCell", bundle: nil), forCellReuseIdentifier: "placeCell") 

func textFieldShouldBeginEditing(_ textField: UITextField) -> Bool { 
    return false 
} 

func textFieldDidEndEditing(_ textField: UITextField) { 
    // TODO: Your app can do something when textField finishes editing 

    print("The textField ended editing. Do something based on app requirements.") 
} 

func numberOfSections(in tableView: UITableView) -> Int { 
    return 1 
} 

func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int { 
    return districts.count 
} 

func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { 

    let cell = tableView.dequeueReusableCell(withIdentifier: "placeCell") as! PlaceTableViewCell 
    // Set text from the data model 
    cell.distLabel.text = districts[indexPath.row] 
    cell.textLabel?.font = distTextField.font 
    return cell 

Как я могу избавиться от этой ошибки. Я использовал различные методы для регистрации ячейки в виде таблицы. Но это не работает. пожалуйста, помогите

+0

Ваш СИБ класс должен простираться от UITableViewCell – Scriptable

+0

Вы уверены, что вы добавили UITableViewCell в файл XIb? и xib-файл, содержащий только этот? – Purushothaman

+0

@Purushothaman Да. –

ответ

1

Если вы используете XIB из tableviewcell затем зарегистрировать ваш xib, как это в viewDidLoad.

tableView.registerNib(UINib(nibName: "PlaceTableViewCell", bundle: nil), forCellReuseIdentifier: "placeCell") 

Если вы используете пользовательский класс tableViewcell затем попробовать это,

let placeCell : PlaceTableViewCell = tableView.dequeueReusableCell(withIdentifier: "placeCell") as! PlaceTableViewCell 

Как я вижу ваш код работает почти правильно. Надеюсь, мой ответ вам поможет.

1

Откройте файл 'PlaceCollectionViewCell.xib'. Убедитесь, что есть только один вид верхнего уровня (посмотрите на боковую панель, а не на холст, она может быть не видна). Убедитесь, что у вашего представления есть класс, который является подклассом UITableViewCell (а не UICollectionViewCell, имя xib выглядит подозрительно для меня), а также идентификатор повторного использования.

only one view on top level

has class and reuse identifier

0

Имея несколько ячеек просмотра таблицы в файле .xib также вызывает эту ошибку. Перемещение ячеек таблицы в свои собственные .xib-файлы разрешило мою ошибку.

наконечник должен содержать ровно один верхний объект уровня, который должен быть экземпляром UITableViewCell