前提・実現したいこと
Swift初心者です。
表題の通りとあるAPIの結果をTextLabelのtextに反映させたいのですが
リクエストを投げてから結果が返ってくるまでに時間がかかるので
textが変更されるまでに時間がかかってしまいます。そのため数秒の間は
TextLabelのtextのデフォルト値が表示されてしまっている状態なので
もっと早い段階でtextの値を変更したいのですが可能でしょうか?
現在以下のメソッドを必要なパラメータを渡して
viewDidLoadで呼んでいる状態です。
Swift初心者で右も左もわからない状態なので
どなたかご教示頂けたら幸いです。
宜しくお願い致します。
swift
1private func RequestGetDetailOfVenues(id:String,parameter:[String:String]){ 2 let client = FoursquareAPIClient(clientId: CLIENT_ID, clientSecret: CLIENT_SECRET) 3 4 client.request(path: "venues/(id)", parameter: parameter){ result in 5 switch result { 6 case let .success(data): 7 print("成功") 8 let json = JSON(data) 9 print(json) 10 let venueJson = json["response"]["venue"] 11 12 if venueJson.isEmpty{ 13 print("詳細なし") 14 }else{ 15 print("詳細あり") 16 let venueDetail = VenueDetail(venueDetailJson: venueJson) 17 //ここのテキストの変更が行われるまでに時間がかかる 18 self.nameLabel.text = venueDetail.getName() 19 self.genreLabel.text = venueDetail.getCategory() 20 21 if venueDetail.getIsOpen(){ 22 self.isOpenLabel.text = "営業中" 23 self.isOpenLabel.textColor = UIColor.white 24 self.isOpenLabel.backgroundColor = UIColor.green 25 }else{ 26 self.isOpenLabel.text = "営業時間外" 27 self.isOpenLabel.textColor = UIColor.white 28 self.isOpenLabel.backgroundColor = UIColor.red 29 } 30 } 31 case let .failure(error): 32 print("失敗") 33 switch error { 34 case let .connectionError(connectionError): 35 print(connectionError) 36 case let .responseParseError(responseParseError): 37 print(responseParseError) 38 case let .apiError(apiError): 39 print(apiError.errorType) 40 print(apiError.errorDetail) 41 } 42 } 43 } 44 }
ラベルに何を表示させたいのでしょうか? 処理が呼ばれる前にself.nameLabel.text = "表示させたい固定文字列"?storyboard?で初期値書き換え?それとも画面全体に処理中クルクル?
返信ありがとうございます。表示させたいのは処理が呼ばれる前にself.nameLabel.text = "APIのレスポンス結果のとある文字列"になります。nameLabelはMainStoryBoardに配置してあるTextLabelです。
APIからのレスポンス取得完了前にそのレスポンスの中の一部の情報を表示したいということですか。
いえAPIからのレスポンス取得完了後で宜しいのですがViewがレンダリングされる段階でAPIで取得した情報も表示されてる状態にしたいです。今viewDidLoadに全て処理を書いておりますが、viewが表示されてからAPIに対してリクエストを送り、その結果をtextLabelに反映しているので、目に見えてから1・2秒してからテキストが変わってしまうので、その画面になったら既にレスポンスの文字列がセットされている状態にしたいのですが、そもそも可能なのでしょうか
私ではすぐにお役に立てそうにありません。申し訳ありません。
とんでもございません。ご返信ありがとうございました。
回答1件
あなたの回答
tips
プレビュー