2017-05-10 54 views
1

我的数据有50个条目。模拟器停在12点,我不明白。为什么模拟器只有12行?

func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int { 
    funcSectCount += 1 
    let data = AppData.orgNames 
    print("data.count=", data.count, " func Section count=", funcSectCount) 
    return data.count 
} 

func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { 
    funcRowCount += 1 
    let data = AppData.orgNames 
    let cell = myTable.dequeueReusableCell(withIdentifier: "myCell", for: 
    indexPath) 
    cell.textLabel?.text = data[indexPath.row] 
    print("indexPath.row=", indexPath.row, " func Row count=", funcRowCount) 
    return cell 
} 

这作为用于每个功能的最终打印:

data.count = 50 FUNC区段数= 3(好奇,但次要)
indexPath.row = 11 FUNC 行count = 12

+1

永远不要依赖于调用数据源和委托方法的次数和顺序。 – rmaddy

回答

3

tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath)tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath)每次需要一个新的单元格时都会被表视图调用。

如果一次只有12个单元格可见,那么表格视图最初只需要12个单元,因此只需要12个单元格。在需要更多信息之前,您必须滚动。在需要细胞之前它不会请求细胞。

+0

感谢您的评论。这是个很棒的资源。 – David

+0

我不清楚。通过发布我的微弱努力来确定细胞再利用是否失败,我无意中让重点错位。真正的问题是这样的:在模拟器中,当我尝试滚过最初的12时,不会这样做。根据我使用的设备,有一个屏幕甚至两个滚动条,但单元格停在12号。除了带来新细胞的原稿之外,没有滚动。 – David

+0

那么12关闭屏幕,然后表视图无法进一步填充? – Tommy

1

非常有趣的是,即使表格正确显示,打印输出也只能达到12,而且无论您滚动到多少个单元格,都会发生这种情况。那是你在找什么?这是因为您在视图中有12行,并且单元格被重用,所以您不会创建更多单元,但是您只是重复使用了已有的12个单元。

+0

不完全。屏幕和打印输出只能达到12(这可能会改变使用的模拟器版本,我相信我看到了13次)。 – David

+0

你的意思是你只有12-13行的表格显示,而你不能滚动还有什么? –

相关问题