我有我的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
只是分享了代码! –