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

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

解決済

2回答

6392閲覧

TableViewCellをボタン押すたびに動的に追加したい

Susanoo2442

総合スコア153

iOS

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

Xcode

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

Swift

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

1グッド

2クリップ

投稿2016/09/12 09:23

編集2016/09/12 09:25

現在アプリを開発していますが
TableViewのCellに対してテキストを入力して
ボタンを押すたびにTableViewのCellをその入力したテキストとともに
動的にTableViewに追加する方法が分かりません。

開発言語はSwiftでサーバーや通信はまだ実装しておりません。
Xcode7を使って開発しております。

ここまでの開発の経緯として
まず、最初にXcodeのテンプレートのTabbedApplicationを選択して
現在、合計で4ページ作りました。
タブページが3ページと
最後の1ページはタブページの最後のページから遷移して切り替えを行った後に表示するページです。

つまり、簡易的にここまでの経緯をまとめすと
最後のタブページにはテキストフィールドと、ボタンを配置していまして
テキストフィールドに文字を入力した後に、ボタンを押すと、画面が遷移先のページに切り替わって
その際に同時にテキストフィールドに入力した値も遷移先のページに引き渡しておりまして
遷移先のページに配置してあるラベルに先ほど遷移前のページでテキストフィールドに入力した
内容を表示するといった感じです。

ここまでは、問題ないのですが
今度は、そのテキストフィールドに入力した値をボタンを押すたびに
遷移先のページでTableViewCellを動的にテキストと一緒に表示させれるようにしたいです。

しかしながら
調べようにもなんていうキーワードで調べたらいいかも分からない状況でありますので
検索するためのキーワードもしくは大まかで構いませんので、問題点を克服する
手法などを教えて頂ければと思います。

宜しくお願い致します。

darkhygge👍を押しています

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

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

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

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

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

Y_M

2016/09/12 09:52 編集

遷移元で入力 --> 移動 を繰り返すことでCellを増やして表示するということですか?
Susanoo2442

2016/09/12 10:17

分かりにくい文章ですいません。 そうです! ボタンを押すと遷移するように しているのですが そのボタンを押すたびに遷移先の Cellを増やして表示するということです! よろしくお願い致します。
fuzzball

2016/09/13 00:06

遷移時に増やすのであれば、普通にTableViewを表示するだけだと思いますが、そもそもTableViewの扱い方が分からないということでしょうか?
Susanoo2442

2016/09/14 09:59

fuzzball様 内容が被ってしまいましたので こちらを、編集させて 頂きます。 遷移時にTableViewのCellを増やして いく手法をご存じでありましたら 是非とも詳細を聞きたく存じます。 宜しくお願い致します。
fuzzball

2016/09/15 00:32

私の質問や、Y_Mさんの回答へのレスポンスを行う方が先ではないですか?あなたが試行錯誤している様子が全く伝わってきません。
guest

回答2

0

クラス名、変数名などはもう一つの質問のコードを元にしています。

現在、reciveDataをSecondViewControllerに持っていますが、これだとFirestViewControllerに戻った時点で無くなってしまいますので、reciveDataをFirestViewControllerに持つようにして、reciveDataを丸ごとSecondViewControllerに渡すようにして下さい。

投稿2016/09/15 04:59

fuzzball

総合スコア16731

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

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

Susanoo2442

2016/09/17 01:17

返信遅くなって申し訳ありませんでした。 いろいろアドバイス頂きなんとか 解決にこぎつけそうです。 ありがとうございました。
guest

0

ベストアンサー

Swift

1import UIKit 2 3class ViewController: UIViewController { 4 5 @IBOutlet weak var textField: UITextField! 6 7 override func viewDidLoad() { 8 super.viewDidLoad() 9 // Do any additional setup after loading the view, typically from a nib. 10 } 11 12 override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) { 13 14 if segue.identifier == "show" { 15 16 let nextViewController: ViewController2 = segue.destinationViewController as! ViewController2 17 18 nextViewController.reciveData.append(self.textField.text!) 19 20 } 21 22 } 23 24 25}

Swift

1import UIKit 2 3class ViewController2: UIViewController, UITableViewDataSource { 4 5 var reciveData: [String] = [] 6 7 override func viewDidLoad() { 8 super.viewDidLoad() 9 } 10 11 func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int { 12 13 return reciveData.count 14 15 } 16 17 func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell { 18 19 let cell = tableView.dequeueReusableCellWithIdentifier("Cell", forIndexPath: indexPath) 20 let label = cell.viewWithTag(1) as! UILabel 21 label.text = reciveData[indexPath.row] 22 23 return cell 24 25 } 26 27}

答えを書いちゃえばこれ。
画面遷移してもCellの中身を残したいのであれば、reciveDataAppDelegateに書くなり、
アプリを消すまで保存したかったらUsersDefaultに保存すれば良いんじゃないでしょうか。

投稿2016/09/13 06:14

Y_M

総合スコア265

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

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

Susanoo2442

2016/09/17 01:16

返信遅くなって申し訳ありませんでした。 まだ、出来てはないですが Y_M様とfuzzball様がDefalutUserに関して説明して下さりましたので なんとか解決にこぎつけそうです。 ありがとうございました。
Susanoo2442

2016/09/18 21:04

Y_M様あれからUserDefaultsを使ってみたのですが どうにもクラッシュしてしまいます。 ViewController2の方で UserDefaultsにてReciveData配列を保存して そのままViewController2の方でReciveData配列を読み込んで 読み込んだ値を、ViewControllerにpreparaForSegueで渡しているのですが ここの箇所でエラーが出てしまいます。 UserDefaultsで値を保存したあとの処理はどのようにすれば よろしいのでしょうか?? アドバイスいただけたらと思います。 宜しくお願い致します。
Y_M

2016/09/20 00:58

遷移元で入力後、ボタンを押した際に保存するようにし 遷移先の画面でUserDefaultsから読み込む形にするといけると思います。
Susanoo2442

2016/09/20 03:05

回答ありがとうございます。 今しがた やってみたのですが どうも、遷移元でUserDefalutsに値をボタンを押して 保存する時にエラーが出て アプリがクラッシュしてしまいます。 @IBAction func SaveActive(sender: AnyObject) { userDefaults.setObject(MyText, forKey: "ReciveSave") } こちらのボタンで、遷移元のテキストフィールド(MyText)に 入力された値をUserDefaultsに保存して 遷移先のViewControlllerにて override func viewDidLoad() { super.viewDidLoad() let result: String! = userDefaults.stringForKey("ReciveSave") ReciveData.append(result) } このような感じで 読み込んだあとに ReciveDataにappendしているのですが コードの書き方がいけないのでしょうか?? お手数おかけしますが アドバイス頂けたらなと思います。 宜しくお願い致します。
Susanoo2442

2016/09/20 03:17

すいません。 やはり、私の書き方が いけなかったみたいでした。 Mytextに""を着けたら 無事できました。 今回はありがとう ございました。
Y_M

2016/09/20 03:56 編集

「Mytext」に「””」をつけると「MyText」が保存される気がしますが。。。 とりあえずやりたいことの根本はできていると思うので、良かったです。
Susanoo2442

2016/09/20 04:39

いやいや、こちらこそ 質問に長らく付き合ってくださり本当に 感謝の気持ちでいっぱいです。 本当にありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問