2017-05-10 94 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行的表格顯示,而你不能滾動還有什麼? –

相關問題