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

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

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

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

Q&A

0回答

1082閲覧

外部から受信した文章のセルの高さ

gtime

総合スコア51

Swift

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

0グッド

1クリップ

投稿2017/04/28 06:09

編集2017/04/28 07:02

表示する文字列は決まっている場合のセルの高さの自動調節はできるようになったのですが(https://teratail.com/questions/74132)外部から受信した文章の場合セルの高さの調節がうまくいきません。![イメージ説明](b037e7ac88d923b5b61ed5912caa5d91.png)

コードはこんな感じです

swift

1import UIKit 2import TwitterKit 3 4class Timeline: UITableViewController { 5 @IBOutlet var TimelineTableView: UITableView! 6 var IconImage = [String]() 7 var Name = [String]() 8 var ScreenName = [String]() 9 var TweetContent = [String]() 10 11 override func viewDidLoad() { 12 super.viewDidLoad() 13 self.TimelineTableView.estimatedRowHeight = 100.0 14 self.TimelineTableView.rowHeight = UITableViewAutomaticDimension 15 self.refreshControl = UIRefreshControl() 16 self.refreshControl?.addTarget(self, action: #selector(refresh), for: UIControlEvents.valueChanged) 17 refresh() 18 } 19 override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int { 20 return Name.count 21 } 22 override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { 23 let cell = tableView.dequeueReusableCell(withIdentifier: "TweetCell") as! CustomTableViewCell 24 cell.setCell(IconImage: IconImage[indexPath.row], Name: self.Name[indexPath.row], ScreenName: self.ScreenName[indexPath.row], TweetContent: self.TweetContent[indexPath.row]) 25 return cell 26 } 27 func refresh() { 28 let endpoint = "https://api.twitter.com/1.1/statuses/home_timeline.json" 29 let client = TWTRAPIClient.init(userID: "11463209") 30 var clientError : NSError? 31 let params = ["count": "1"] 32 let request = client.urlRequest(withMethod: "GET", url: endpoint, parameters: params, error: &clientError) 33 client.sendTwitterRequest(request) { 34 (response, data, connectionError) -> Void in 35 if connectionError != nil { 36 print("エラー: \(String(describing: connectionError))") 37 } else { 38 let json = try! JSONSerialization.jsonObject(with: data!, options: .allowFragments) as! [[String:Any]] 39 for object in json { 40 if let user = object["user"] as? [String:Any] { 41 let profile_image_url_https = user["profile_image_url_https"] ?? "(empty)" 42 self.IconImage += ["\(profile_image_url_https)"] 43 let names = user["name"] ?? "(empty)" 44 self.Name += ["\(names)"] 45 let screen_name = user["screen_name"] ?? "(empty)" 46 self.ScreenName += ["\(screen_name)"] 47 } else { 48 print("does not exist 'user'") 49 } 50 let text = object["text"] ?? "(empty)" 51 self.TweetContent += ["\(text)"] 52 53 } 54 self.TimelineTableView.reloadData(); 55 } 56 } 57 self.tableView.tableFooterView = UIView() 58 self.refreshControl?.endRefreshing() 59 } 60}

swift

1import UIKit 2 3class CustomTableViewCell: UITableViewCell { 4 5 @IBOutlet weak var IconImageView: UIImageView! 6 @IBOutlet weak var NameLabel: UILabel! 7 @IBOutlet weak var ScreenNameLabel: UILabel! 8 @IBOutlet weak var TweetContentLabel: UILabel! 9 10 override func setSelected(_ selected: Bool, animated: Bool) { 11 super.setSelected(selected, animated: animated) 12 } 13 14 func setCell(IconImage: String, Name: String, ScreenName: String, TweetContent: String) { 15 NameLabel.text = Name 16 ScreenNameLabel.text = ScreenName 17 TweetContentLabel.text = TweetContent 18 let url = NSURL(string: IconImage) 19 let req = NSURLRequest(url:url! as URL) 20 NSURLConnection.sendAsynchronousRequest(req as URLRequest, queue:OperationQueue.main){(res, data, err) in 21 let image = UIImage(data:data!) 22 self.IconImageView.image = image 23 } 24 } 25}

表示するためのLabelのLinesも0に設定しましたイメージ説明
外部から受信した文章をセルにセットし、セルの高さを自動調節するにはどのようにすれば良いのでしょうか?

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

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

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

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

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

fuzzball

2017/04/28 06:51

どう「うまくいかない」のでしょうか?
gtime

2017/04/28 07:02

すみません追加しました
fuzzball

2017/04/28 07:18

これはrefresh()した後のスクリーンショットでしょうか?
gtime

2017/04/28 07:35

ビルドした時点で viewDidLoad() { 内の refresh()が一回実行されています。
fuzzball

2017/04/28 07:40 編集

ビルドではなく実行(Run)ですよね。用語は正しく使って下さい。で、self.TimelineTableView.reloadData() の上に print(self.TweetContent) を追加して、受信したデータを確認してみて下さい。(内容はここに書かなくていいです)
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問