2024-11-27
按+号搜索"Table View"。
信息展示搜索"Table View Cell"
实际上就是delegate的实现。
viewDidLoad里面完成delegate,这里是dataSource
register用于注册我们后面要使用的cell。用nibName来区分是哪个风格cell,为的是寻找对应的.xlb文件(一般也是Class的名字),这个可以复用。而identifier则不可以复用。一个nibName可以对应多个identifier。
tableView.dataSource = self
tableView.register(UINib(nibName: K.cellNibName, bundle: nil), forCellReuseIdentifier: K.cellIdentifier)
最后面创建一个extension来用protocol:
//MARK: - UITableViewDataSource
extension ChatViewController: UITableViewDataSource{
//有多少行
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return messages.count
}
//用哪个cell
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: K.cellIdentifier, for:indexPath)
cell.textLabel?.text = messages[indexPath.row].body
return cell
}
}
为什么用DataSource这个protocol?因为是输入数据。
如果需要在选择数据时做相应的操作,才需要用Delegate这个protocol。
storyboard里面选中cell,将selection
设置为none
即可。现在用户就不可以选择每个cell了,这是聊天软件的正常行为,而不是像信息软件或者邮件软件那样。