我有我的UITabBarController中的UITableView加載一個奇怪的問題。當我最初轉換到TabBar視圖(從「登錄」視圖控制器)時,表不會加載/顯示其數據。它只是在我點擊不同的標籤之後,然後回到原來的標籤,它纔會加載信息。該表的數據正從服務器中檢索,這發生在一個函數中,該函數在相關選項卡的viewDidLoad和viewWillAppear中運行。UITabBarController不加載自定義UITableView
我不完全確定爲什麼會發生這種情況。下面的代碼是viewDidLoad和viewWillAppear函數,用於容納tableView的選項卡。任何提示都表示讚賞。謝謝。
override func viewDidLoad() {
super.viewDidLoad()
getTableInfo()
tableView.allowsSelection = false
tableView.delegate = self
tableView.dataSource = self
tableView.reloadData()
}
override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated)
getTableInfo()
tableView.reloadData()
}
編輯:下面是用於從服務器獲取表的信息的代碼,到一個變量tableInfo:
let task = URLSession.shared.dataTask(with: request) { data, response, error in
let httpResponse = response as! HTTPURLResponse
let statusCode = httpResponse.statusCode
if (statusCode == 200) {
do {
if let data = data,
let jsonResponse = try JSONSerialization.jsonObject(with: data) as? [String: Any] {
self.tableView.removeAll()
if let locations = jsonResponse["pictures"] as? String {
self.tableInfo = locations.lines
self.tableInfo.reverse()
}
}
} catch {
print("Error deserializing JSON: \(error)")
}
}
存在用於我省略,因爲它們其他狀態碼檢查是無關緊要的(他們只是顯示一個警告框,描述如果觸發了錯誤)。
如果我不得不猜測,我會說服務器的數據在視圖加載後返回。 –
在從服務器獲取數據的函數中是否有完成處理程序?你可以分享該代碼嗎? – mat
只是分享了代碼! –