UITabBarController内で私のUITableViewの読み込みに奇妙な問題があります。私が最初にTabBarビュー( "ログイン"ビューコントローラから)に移行するとき、テーブルはそのデータをロード/表示しません。別のタブをクリックした後で元のタブに戻り、情報を読み込むだけです。テーブルのデータがサーバーから取得されています。このデータは、関連するタブのviewDidLoadとviewWillAppearの両方で実行される関数で発生します。UITabBarControllerがカスタムUITableViewをロードしない
なぜこれが起こっているのか完全にわかりません。以下のコードは、tableViewを格納するタブのviewDidLoadおよびviewWillAppear関数です。任意のヒントが評価されます。ありがとう。
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()
}
EDIT:以下の変数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
コードを共有しました。 –