我已經閱讀了 3 頁的谷歌結果,但沒有一個對我有用,這里是問題的詳細描述:
每次我啟動我的應用程式時,如果我點擊顯示包含我的表格視圖的 vc 的選項卡欄專案,它是空的。我必須轉到另一個選項卡并回傳它,然后我的表格視圖才會獲取。已經花了 8 小時試圖修復它。
使用按鈕輕按顯示的完全相同的 VC 會正確顯示并每次加載。
我已經嘗試過的:
- 三重檢查我是否有: tableView.delegate = self tableView.dataSource = self
- 嘗試將獲取移動到 viewDidAppear 或 viewWillAppear,但沒有成功。
- 診斷它,回傳部分數,但行數 = 0,cellForRowAt 在第一次標簽欄點擊時永遠不會執行,即使我的帖子被正確獲取。
- 嘗試修復存??在的任何約束,但沒有奏效。
看起來好像 tableView.reloadData() 不起作用。我投降了,請幫幫我!
uj5u.com熱心網友回復:
您仍然沒有提供非常清晰的圖片。不過,乍一看,我會說您需要在reloadData()對posts(for:completion:). (我猜測該函式的確切名稱,因為您沒有包含它。)
如果您posts(for:completion:)在后臺執行緒上呼叫其完成處理程式,那么您需要將您的呼叫包裝reloadData()在呼叫中DispatchQueue.main.async()(因為TableView.reloadData()是 UIKit 呼叫,您不能在后臺執行緒上進行 UIKit 呼叫。)
代碼可能如下所示:
StartTestingViewController.posts(for: UUID as! String) { (posts) in
DispatchQueue.main.async {
self.posts = posts
self.tableView.reloadData()
}
}
(我沒有復制您的整個 viewDidLoad 方法,只是呼叫您獲取帖子的函式的那部分。)
該UITableView.reloadData()方法告訴您的表格視圖“資料的部分/行數或其內容可能已更改。請重新向您的資料源詢問內容并重新構建您的單元格。” 表格視圖將再次詢問節數,詢問每個節中的行數,并要求足夠的單元格以用單元格填充表格視圖的框架。
如果您不呼叫reloadData()表格視圖,則不知道有新資料,因此它不會自行重新加載。
我懷疑您可以轉到另一個選項卡并回傳查看您的資料的原因是資料已在您位于另一個選項卡上時加載,因此可以立即使用。我必須查看您的標簽顯示代碼的確切細節才能確定。
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/515117.html
