#ios #swift #xcode #uitableview
#iOS #swift #xcode #uitableview
Вопрос:
Кажется, я не могу понять, почему все ячейки пусты в моей таблице с пользовательскими ячейками. Я некоторое время искал и пробовал предложения, но не могу понять это. На данный момент я чувствую, что упускаю что-то очевидное
Это мой .swift
import UIKit
struct Contact {
var name:String
var title:String
var phone:String
}
class ContactTableViewCell: UITableViewCell {
@IBOutlet weak var contactName: UILabel!
@IBOutlet weak var contactTitle: UILabel!
@IBOutlet weak var contactPhone: UILabel!
}
class Contacts:UIViewController, UITableViewDelegate, UITableViewDataSource {
@IBOutlet weak var contactTable: UITableView!
var contactData = [
Contact(name: "Main Office", title: "Title", phone: "Phone Here"),
Contact(name: "Joe Bloggs", title: "Title Here", phone: "Phone Number"),
Contact(name: "John Smith", title: "Another Title", phone: "Another Phone")
]
override func viewDidLoad() {
super.viewDidLoad()
contactTable.register(ContactTableViewCell.self, forCellReuseIdentifier: "cellId")
contactTable.delegate = self
contactTable.dataSource = self
}
func tableView(_ contactTable: UITableView, numberOfRowsInSection section: Int) -> Int {
return self.contactData.count
}
func numberOfSectionsInTableView(contactTable: UITableView) -> Int {
return 1
}
func tableView(_ contactTable: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let contactCell = contactTable.dequeueReusableCell(withIdentifier: "cellId", for: indexPath) as! ContactTableViewCell
let contact = contactData[indexPath.row]
contactCell.contactName?.text = contact.name
contactCell.contactTitle?.text = contact.title
contactCell.contactPhone?.text = contact.phone
return contactCell
}
}
Мои IBOutlets определенно связаны, а ячейка связана с ContactTableViewClass
Вот как выглядит моя ячейка
Любая помощь будет принята с благодарностью, спасибо
Ответ №1:
Прокомментируйте эту строку
contactTable.register(ContactTableViewCell.self, forCellReuseIdentifier: "cellId")
И установите идентификатор cellId
ячейки в IB, когда вы создаете прототип ячейки, не регистрируйте ее, так как регистрация происходит автоматически
В вашем случае все выходы равны нулю
// try contactCell.contactName.text and it' ll crash
contactCell.contactName?.text = contact.name
contactCell.contactTitle?.text = contact.title
contactCell.contactPhone?.text = contact.phone
Когда вы переопределяете регистрацию IB в классе, макет которого создается в IB, как ContactTableViewCell.self
есть, когда вы полностью создаете класс с его макетом программно
Комментарии:
1. Ну, черт возьми, в конце концов, это было что-то настолько простое. Спасибо. Я не могу поверить, что весь этот поиск не привел к этому