我有UITableView方法:
override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int
override func numberOfSections(in tableView: UITableView) -> Int
override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell
所以,问题是Xcode首先运行
override func numberOfSections(in tableView: UITableView) -> Int
返回给我1。
之后它会运行override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int
,这也会让我返回1。
但是我不知道为什么在这两种方法之后它没有运行cellForRowAt
方法并且在我的UITableView上没有显示任何行。
我不知道那里发生了什么以及为什么会这样。 你遇到过这样的问题,请你帮忙解决一下吗?
override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
if let fetchedResultsController = self.fetchedResultsController, let fetchedObjects = fetchedResultsController.fetchedObjects {
if !searchController.isActive {
print("numberOfRowsInSection fetchedObjects.count - \(fetchedObjects.count)")
return fetchedObjects.count
} else {
if let results = filteredResult[searchController.searchBar.selectedScopeButtonIndex] {
print("numberOfRowsInSection results.count - \(results.count)")
return results.count
}
}
}
print("numberOfRowsInSection - 0")
return 0
}
override func numberOfSections(in tableView: UITableView) -> Int {
if let frc = fetchedResultsController, frc.fetchedObjects?.count != 0 {
print("numberOfSections - 1")
return 1
} else {
print("numberOfSections - 0")
return 0
}
}
答案 0 :(得分:0)
可能发生的情况是您的手机单元的高度为0
。发生这种情况时,即使其他方法返回非零cellForRowAt
/ section
计数,也不会调用row
。
我猜测为什么会这样,你可能正在为你的单元格使用自动布局,但是你的约束不允许单元格找出它自己的高度。您可能在不知情的情况下使用自动布局,因为在iOS 11上,它现在是默认设置。如果您使用的是故事板,则可以在属性检查器中设置单元格原型的高度,而不是选中automatic
框。或者,您可以使用tableView.rowHeight
或通过实施func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat