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

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

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

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

Twitter

Twitterは、140文字以内の「ツイート」と呼ばれる短文を投稿できるサービスです。Twitter上のほぼ全ての機能に対応するAPIが存在し、その関連サービスが多く公開されています。

Xcode

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

Swift

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

Q&A

解決済

1回答

1675閲覧

【Swift4】UITableViewで投稿した内容が反映されない

weekplane

総合スコア29

iOS

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

Twitter

Twitterは、140文字以内の「ツイート」と呼ばれる短文を投稿できるサービスです。Twitter上のほぼ全ての機能に対応するAPIが存在し、その関連サービスが多く公開されています。

Xcode

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

Swift

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

0グッド

0クリップ

投稿2018/11/29 04:50

編集2018/11/29 04:56

TimeLineViewController.swift

1// 2// TimeLineViewController.swift 3// OriginalTwitter 4 5import UIKit 6import NCMB 7import NYXImagesKit 8import SwiftDate 9import SVProgressHUD 10import Kingfisher 11 12 13class TimeLineViewController: UIViewController,UITableViewDataSource,UITableViewDelegate,TwitterCellTableViewCellDelegate{ 14 15 16 var selectedPost: Post? 17 var posts = [Post]() 18 // var followings = [NCMBUser]() 19 20 21 @IBOutlet var timelineTableView: UITableView! 22 23 override func viewDidLoad() { 24 super.viewDidLoad() 25 26 self.navigationController?.navigationBar.barTintColor = UIColor(red: 85.0/255.0, green: 172.0/255.0, blue: 238.0/255.0, alpha: 0.7) 27 // ナビゲーションバーのアイテムの色 (戻る < とか 読み込みゲージとか) 28 self.navigationController?.navigationBar.tintColor = .white 29 // ナビゲーションバーのテキストを変更する 30 self.navigationController?.navigationBar.titleTextAttributes = [ 31 // 文字の色 32 .foregroundColor: UIColor.white 33 // Do any additional setup after loading the view. 34 ] 35 36 timelineTableView.delegate = self 37 timelineTableView.dataSource = self 38 39 let nib = UINib(nibName: "TwitterCellTableViewCell", bundle: Bundle.main) 40 timelineTableView.register(nib, forCellReuseIdentifier: "Cell") 41 42 timelineTableView.tableFooterView = UIView() 43 44 loadTimeline() 45 } 46 47 48 func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int { 49 return posts.count 50 } 51 52 func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { 53 54 let cell = tableView.dequeueReusableCell(withIdentifier: "Cell") as! TwitterCellTableViewCell 55 56 cell.delegate = self 57 cell.tag = indexPath.row 58 59 let user = posts[indexPath.row].user 60 cell.userName.text = user.displayName 61 cell.tweet.text = posts[indexPath.row].text 62 63 64 return cell 65 } 66 67 func loadTimeline(){ 68 let query = NCMBQuery(className: "Post") 69 70 query?.order(byDescending: "creareDate") 71 72 query?.includeKey("user") 73 74 query?.findObjectsInBackground({ (result, error) in 75 76 if error != nil { 77 print(error) 78 } else { 79 self.posts = [Post]() 80 81 for post in result as! [NCMBObject] { 82 let user = post.object(forKey: "user") as! NCMBUser 83 84 if user.object(forKey: "active") as? Bool != false{ 85 86 let user = User(objectId: user.objectId, userName: user.userName) 87 88 let imageUrl = "aaa" 89 90 let text = post.object(forKey: "tweet") as! String 91 92 let post = Post(objectId: post.objectId, user: user, imageUrl: imageUrl, text: text, createDate: post.createDate) 93 94 95 } 96 } 97 self.timelineTableView.reloadData() 98 } 99 100 }) 101 102 } 103 104 105 106 func setRefreshControl(){ 107 let refreshControl = UIRefreshControl() 108 refreshControl.addTarget(self, action: #selector(reloadTimeline(refreshControl:)), for: .valueChanged) 109 timelineTableView.addSubview(refreshControl) 110 } 111 112 @objc func reloadTimeline(refreshControl: UIRefreshControl){ 113 refreshControl.beginRefreshing() 114 } 115 116} 117

前提・実現したいこと

NCMBCloudを使って、投稿したツイートをタイムラインで取得したいのですが、何度試しても投稿内容が表示されなくて困っています。とりあえず文字列のツイートが投稿される様子を確認したいので、フォロー機能・いいね機能・リツイート機能などの機能はまだ実装していない状態です。

使っているのはUITableViewで、カスタムセルを使用しています。

Postクラス

Post.swift

1import UIKit 2 3class Post{ 4 var objectId: String 5 var user: User 6 var imageUrl: String 7 var text: String 8 var createDate: Date 9 var isLiked: Bool? 10 var likeCount: Int = 0 11 12 init(objectId: String, user: User, imageUrl: String, text: String, createDate: Date){ 13 14 self.objectId = objectId 15 self.user = user 16 self.imageUrl = imageUrl 17 self.text = text 18 self.createDate = createDate 19 } 20 21 22} 23

TwitterCellTableViewCell.swift

TwitterCellTableViewCell.swift

1import UIKit 2import NCMB 3 4 5protocol TwitterCellTableViewCellDelegate { 6 7} 8 9 10class TwitterCellTableViewCell: UITableViewCell, UITextFieldDelegate{ 11 12 13 var delegate: TwitterCellTableViewCellDelegate? 14 @IBOutlet var userImage: UIImageView! 15 @IBOutlet var userId: UILabel! 16 @IBOutlet var userName: UILabel! 17 @IBOutlet var tweet: UILabel! 18 19 20 21 22 23 override func awakeFromNib() { 24 super.awakeFromNib() 25 26 27 // Initialization code 28 } 29 30 override func setSelected(_ selected: Bool, animated: Bool) { 31 super.setSelected(selected, animated: animated) 32 33 // Configure the view for the selected state 34 } 35 36} 37

TwitterCellTableViewCell.xib

*ユーザー画像は処理がややこしいので後回しにしています。
*Identifierに"Cell"が設定されている状態です。
イメージ説明

発生している問題・エラーメッセージ

タイムラインに投稿しても、ツイートが表示されない状態。
NCMBクラウドにはきちんとデータが登録されている → NCMBクラウドからデータを取ってくる処理の過程で何かしらの問題が発生していると推測。

試したこと

TableViewControllerを色々といじった。

補足情報(FW/ツールのバージョンなど)

・Swift4を使っています。

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

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

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

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

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

guest

回答1

0

自己解決

自己解決しました。
func loadTime()でself.posts.append(post)を書いて、配列にpostを追加する必要があったようです。

投稿2018/11/29 05:19

weekplane

総合スコア29

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問