質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.49%
iOS

iOSとは、Apple製のスマートフォンであるiPhoneやタブレット端末のiPadに搭載しているオペレーションシステム(OS)です。その他にもiPod touch・Apple TVにも搭載されています。

Xcode

Xcodeはソフトウェア開発のための、Appleの統合開発環境です。Mac OSXに付随するかたちで配布されています。

Swift

Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

Q&A

解決済

1回答

1398閲覧

TableViewのセルが実装されるタイミングについて

jiuiuoiui

総合スコア24

iOS

iOSとは、Apple製のスマートフォンであるiPhoneやタブレット端末のiPadに搭載しているオペレーションシステム(OS)です。その他にもiPod touch・Apple TVにも搭載されています。

Xcode

Xcodeはソフトウェア開発のための、Appleの統合開発環境です。Mac OSXに付随するかたちで配布されています。

Swift

Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

0グッド

0クリップ

投稿2016/11/12 08:44

編集2016/11/12 08:49

jsonデータを取得することには成功しているのですが、セルがうまく実装されません。
storyboard
イメージ説明
imageview,labelにはそれぞれtagをつけてあります。
エラーはでません
イメージ説明

import UIKit class ViewController: UIViewController,UITableViewDataSource,UITableViewDelegate { @IBOutlet weak var mySearchBar: UISearchBar! @IBOutlet weak var table: UITableView! var imgArray: [String] = [] var okashiArray: [String] = [] var makerArray: [String] = [] override func viewDidLoad() { super.viewDidLoad() } override func didReceiveMemoryWarning() { super.didReceiveMemoryWarning() } func SearchOkashi(){ //let url:NSURL = NSURL(string: "http://www.sysbird.jp/webapi/?apikey=guest&format=json&keyword=ラムネ&max=10")! let wkStr:String = "http://www.sysbird.jp/webapi/?apikey=guest&format=json&keyword=ラムネ&max=10"; let url = NSURL(string: wkStr.addingPercentEncoding(withAllowedCharacters: NSCharacterSet.urlQueryAllowed)!)! let config:URLSessionConfiguration = URLSessionConfiguration.default let session:URLSession = URLSession(configuration: config) let dataTask = session.dataTask(with: url as URL, completionHandler: { (data:Data?, response:URLResponse?, error:Error?) -> Void in if (error == nil){ do { let json = try (JSONSerialization.jsonObject(with: data!, options: JSONSerialization.ReadingOptions.allowFragments)) as! [String:AnyObject] let items = json["item"] as! [[String:AnyObject]] for okashi in items { self.okashiArray += [okashi["name"] as! String] self.imgArray += [okashi["image"] as! String] print(okashi["image"] as! String) self.makerArray += [okashi["maker"] as! String] print(okashi["maker"] as! String) } } catch { print("failed to parse") } } session.invalidateAndCancel() }) dataTask.resume() } func tableView(_ table: UITableView, numberOfRowsInSection section: Int) -> Int { SearchOkashi() return imgArray.count } func tableView(_ table: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { // tableCell の ID で UITableViewCell のインスタンスを生成 let cell = table.dequeueReusableCell(withIdentifier: "tableCell", for: indexPath) // Tag番号 1 で UIImageView インスタンスの生成 let imageView = table.viewWithTag(1) as! UIImageView let url = NSURL(string:"\(imgArray[indexPath.row])") let req = NSURLRequest(url:url! as URL) NSURLConnection.sendAsynchronousRequest(req as URLRequest, queue:OperationQueue.main){(res, data, err) in let image = UIImage(data:data!) imageView.image = image } // Tag番号 2 で UILabel インスタンスの生成 let label1 = table.viewWithTag(2) as! UILabel label1.text = "\(okashiArray[indexPath.row])" print(okashiArray.count) // Tag番号 3 で UILabel インスタンスの生成 let label2 = table.viewWithTag(3) as! UILabel label2.text = "\(makerArray[indexPath.row])" retu![イメージ説明](4d5377524146979b29157429a6928efe.png)l } }

###試したこと
tableViewのセルの数を返すメソッドの中でsearchOkashi()をしてみたのですがだめでした。

###補足情報(言語/FW/ツール等のバージョンなど)
より詳細な情報

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

SearchOkashi()は非同期でサーバーからデータを取得しますので同じスコープに書いても別に実行されます。

テーブルは先に作られて(空の状態)、サーバーからデータを取得した後に(表示する配列を作成した後)テーブルをリロードデータするとちゃんと表示されると思います。

投稿2016/11/12 13:06

編集2016/11/13 00:37
_Kentarou

総合スコア8490

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.49%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問