// Variable and ViewDidLoad
var auxRow = 0
var auxSection = 0
override func viewDidLoad() {
super.viewDidLoad()
}
//章节数,只有一个部分
override func numberOfSectionsInTableView(tableView: UITableView) -> Int {
auxSection += 1
print("times section: ", auxSection)
return 1
}
//行数
override func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
auxRow += 1
print("times row: ", auxRow)
return 2
}
// TableView配置单元格
override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
let textCellIdentifier = "cellText"
let cell = tableView.dequeueReusableCellWithIdentifier(textCellIdentifier, forIndexPath: indexPath)
let variable : String = indexPath.row.description
cell.textLabel?.text = variable
return cell
}
输出:
times section: 1
times row: 1
times section: 2
times row: 2
times section: 3
times row: 3
times section: 4
times row: 4
方法numberOfRowsInSection
被调用4次。为什么会这样?
答案 0 :(得分:5)
Apple不保证UIKit可以多长时间调用您的一个委托方法。他们拥有框架。我们可以期望它们缓存该值,但没有任何要求他们这样做。
答案 1 :(得分:2)
您可以在window.slice
方法中设置断点,以查看内部使用的断点。没有理由不应该多次调用它,因为只要tableview内部需要知道它有多少行就会调用它。它被称为4次,因为Apple的tableview代码需要在4个不同的时间知道你的一个部分中有多少行。