我的tableview单元格上的组件不可见
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了我的tableview单元格上的组件不可见相关的知识,希望对你有一定的参考价值。
我正在构建一个表视图,其中只包含一个带有不同标签的按钮。
我正在使用表视图来显示按钮列表。
这是一个包含按钮名称的结构。
struct post {
let name : String
}
我已将数据从firebase推送到结构帖子。
var posts = [post]()
override func viewDidLoad() {
super.viewDidLoad()
let db = Firestore.firestore()
db.collection(Auth.auth().currentUser?.uid as Any as! String).getDocuments() { (querySnapshot, err) in
if let err = err {
print("Error getting documents: (err)")
} else {
for document in querySnapshot!.documents {
// print("(document.documentID) => (document.data())")
self.posts.insert(post(name: document.documentID), at: 0)
}
self.contents.reloadData()
}
}
}
这些是表视图的正常功能
public func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return posts.count
}
public func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "Cell", for: indexPath) as! cellview
cell.programnames.titleLabel?.text = posts[indexPath.row].name
return cell
}
cellview.swift的设计如下
class cellview: UITableViewCell {
@IBOutlet weak var programnames: UIButton!
override func awakeFromNib() {
super.awakeFromNib()
// Initialization code
}
override func setSelected(_ selected: Bool, animated: Bool) {
super.setSelected(selected, animated: animated)
// Configure the view for the selected state
}
请告诉我我的错误。按钮'程序名'在模拟器的表视图中不可见
答案
我看到一些遗漏的东西可能导致UITableViewDataSource
不被调用
- 你需要在
UITableView.dataSource = self
中设置viewDidLoad
- 你需要在
cellview.xib
注册viewDidLoad
,如下:contents.register(UINib(nibName: "cellview", bundle: nil), forCellReuseIdentifier: "Cell")
- 可选项是因为这些可以是
nil
,如果它确实你的应用程序将崩溃,避免强制解包选项!
,这里是带有可选链接的示例guard
语句guard err == nil, let documents = querySnapshot?.documents else { // error handling here return } self.posts = documents.map { post(name: $0.documentID) }
- 我在你的代码中看到使用
posts.insert(..., at: 0)
将反转数组,如果它的目的是使用以下代替:self.posts = documents.map({ post(name: $0.documentID) }).reversed()
以上是关于我的tableview单元格上的组件不可见的主要内容,如果未能解决你的问题,请参考以下文章
我想在 tableview 单元格中显示文本字段数据,以替换 iphone 中单元格上的现有数据?
最后一个单元格上的 UITableView beginUpdate 和 endUpdate 重新加载 tableview
如何使表格视图单元格上的按钮调用正确的 tableView:cellForRowAtIndexPath?