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

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

新規登録して質問してみよう
ただいま回答率
85.48%
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回答

477閲覧

ボタン押下でUITableviewを読み込みたい

sunglass

総合スコア303

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クリップ

投稿2020/09/05 09:28

編集2020/09/05 11:58

UItextFieldから値を入力しボタンを押下するとUITabelviewがreloadDataされるようにしたいです。

CloudFirestoreのサブコレクションをDictionary型に一度代入して
そこに任意の値(例:id: 1)を追加。
全データが揃ったところで配列に格納しています。

-- 追記 -- // Dictionary型 var dic[String:Any] = [:] // Array型 var array: [[String: Any]] = [] override func viewDidLoad() { super.viewDidLoad() data() ... } func data() { let db = Firestore.firestore() db.collection("test")...getDocuments() { (querySnapshot, err) in if let err = err { print("Error getting documents: (err)") } else { for document in querySnapshot!.documents { // サブコレクション格納 self.dic = document.data() // 任意の値の加処 // コード省略しています // dic to array self.array.append(self.dic) } // コレクションビューを更新 self.table.reloadData() } // コレクションビューを更新 self.table.reloadData() }// コレクションビューを更新 self.table.reloadData() } -- 追記 -- @IBAction func addButten(_ sender: Any) { textFieldString = TextField.text! //追加ボタンを押したらフィールドを空にする TextField.text = "" let docData: [String: Any] = [ "test01": textFieldString, "test02": idString, "test03": "なし", "date": Timestamp(date: Date()), "test04": false ] db.collection("test").document(test01).collection("test03").document() .setData(docData) { error in if let error = error { print("エラーが起きました") } else { print("ドキュメントが保存されました") // コレクションビューを更新 self.table.reloadData() } // コレクションビューを更新 self.table.reloadData() } // コレクションビューを更新 self.table.reloadData() }

現在reloadDataされない状態です。
クリーンビルド済みです。
※Dictionary型からArray型への変換はこちらの事情になります。

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

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

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

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

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

TsukubaDepot

2020/09/05 09:39

TableView で再表示させたいデータの追記などはどこで行なっているのでしょうか。
sunglass

2020/09/05 11:45

func data() {...}という関数内で行っています。 少しややこしい表記なので追記させていただきます。
TsukubaDepot

2020/09/05 12:44

提示していただいているコードだけで判断すると、ボタンを押して、TextFieldに入力されたデータをFirebaseにセットしたあとは、単に reloadData を実行しているだけですので、実質表示は更新されないように思えるのですが、それで正しい動作なのでしょうか。 「何をしたらどうなるようにしたいのか」、「それが期待とどのように異なるのか」を説明していただければ違うコメントができるかもしれません。
sunglass

2020/09/05 13:09

>実質表示は更新されないように思えるのですが、それで正しい動作なのでしょうか。 いえ! 更新したいです。 TextFieldに入力されたデータをFirestoreに保存して、UITableViewにも反映させたいです。(ボタン押下時に) その場合どうすれば良いのでしょうか..?
guest

回答1

0

自己解決

勘違いしていました..
CloudFirestore関係ずっとやっていたのでそっちで反映させようとしていました..
ボタン押下処理内でappendするだけで十分でした..
コメントくださった方ありがとうございます!

@IBAction func addButten(_ sender: Any) { ... else { print("ドキュメントが保存されました") // ここで配列に追加するだけ self.todos.append(docData) } ... }

投稿2020/09/05 12:35

sunglass

総合スコア303

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問