我有一个问题:我的tableView没有显示来自领域数据库的任何数据。但是我想问题出在单元格中。
class ClientViewController: UITableViewController {
@IBOutlet var table: UITableView!
var clientsInfo: Results<Client> {
get {
return realm.objects(Client.self)
}
}
override func viewDidLoad() {
super.viewDidLoad()
self.tableView.register(myCell.self, forCellReuseIdentifier: "cell")
table.delegate = self
table.dataSource = self
table.reloadData()
}
override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: myCell.reuseIdentifier, for: indexPath) as! myCell
let info=clientsInfo[indexPath.row]
cell.todoLabel.text = info.firstName
return cell
}
}
class myCell: UITableViewCell {
@IBOutlet weak var label: UILabel!
static let reuseIdentifier = "cell"
@IBOutlet weak var todoLabel: UILabel!
override init(style: UITableViewCellStyle, reuseIdentifier: String?) {
super.init(style: style, reuseIdentifier: reuseIdentifier)
}
}
答案 0 :(得分:1)
您的代码中有些错误,
第一
您使用的是UITableViewController,默认情况下它已经有一个tableView,因此您无需像以前一样声明新的tableView
@IBOutlet var table: UITableView!
第二:
在viewDidLoad中,您正在为默认的tableView注册单元格,并将声明的表用于dataSource和委托,这将不起作用。我建议您删除创建的表并使用默认表,以便您的viewDidLoad如下所示:
override func viewDidLoad() {
super.viewDidLoad()
self.tableView.register(myCell.self, forCellReuseIdentifier: "cell")
self.tableView.delegate = self
self.tableView.dataSource = self
}
和第三名:
您缺少的实现:
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int
答案 1 :(得分:0)
在此代码中,您忘记了实现tableView(numberOfRowsInSection:)
方法,因此默认情况下它返回0,并且从未调用过您的tableview(cellForRowAt:)
方法。
AND
也许这与您的问题无关,
您在UITableView
中使用了UITableView
变量(名称为 表 )。这是不必要的,因为UITableView已经具有UITableView(名称为 tableView )。并且您已经将单元格注册到 tableView 中,但是似乎您试图从 table 出队。