gpt4 book ai didi

swift - tableView.cellForRowAtIndexPath(indexPath) 返回 nil

转载 作者:搜寻专家 更新时间:2023-10-30 22:25:19 24 4
gpt4 key购买 nike

我有一个循环遍历我的 TableView 的验证函数,问题是它在某些时候返回 nil 单元格。

for var section = 0; section < self.tableView.numberOfSections(); ++section {
for var row = 0; row < self.tableView.numberOfRowsInSection(section); ++row {
var indexPath = NSIndexPath(forRow: row, inSection: section)
if section > 0 {
let cell = tableView.cellForRowAtIndexPath(indexPath) as! MyCell
// cell is nil when self.tableView.numberOfRowsInSection(section) return 3 for row 1 and 2
// ... Other stuff
}
}
}

我不太确定我在这里做错了什么,我尝试仔细检查 indexPath 行和部分,它们都很好,numberOfRowsInSection() 返回 3 但第 1 行和第 2 行返回一个 nil 单元格...我也可以在 UI 中看到我的 3 单元格。

有人知道我做错了什么吗?

我的函数在一些 tableView.reloadData() 之后和 viewDidLoad 中被调用,尽管我没有在 dispatch_async 中调用它,但 tableview 是否有可能在我的函数执行事件之前没有完成重新加载??

希望得到解答。提前致谢

------------------------ 回答---------------- -----

补充说明:

cellForRowAtIndexPath 只返回可见单元格,验证应该在数据模型中完成。当细胞构造在

override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {

它应该根据验证状态改变自己。

最佳答案

如文档中所述,cellForRowAtIndexPath 返回:

An object representing a cell of the table, or nil if the cell is not visible or indexPath is out of range.

因此,除非您的表格已完全显示,否则该方法会返回一些屏幕外的行 nil

它为非可见单元格返回 nil 的原因是因为它们不存在 - 表格重复使用相同的单元格,以最大限度地减少内存使用 - 否则不可能有大量行的表格进行管理。

关于swift - tableView.cellForRowAtIndexPath(indexPath) 返回 nil,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31188893/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com