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

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

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

TableView(UITableView)とは、リスト形式で表示するコントロールで、ほとんどのアプリに使用されています。画面を「行」に分けて管理し、一般的には各行をタップした際に詳細画面に移動します。

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回答

1385閲覧

tabelViewへの挿入について

退会済みユーザー

退会済みユーザー

総合スコア0

TableView

TableView(UITableView)とは、リスト形式で表示するコントロールで、ほとんどのアプリに使用されています。画面を「行」に分けて管理し、一般的には各行をタップした際に詳細画面に移動します。

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

投稿2018/06/11 15:18

編集2018/06/12 14:58

swift

1import UIKit 2 3class EditViewController: UIViewController,UITableViewDelegate,UITableViewDataSource { 4 5 @IBOutlet weak var EditViewTabelView = UITableView() 6 7 var data = [String]() 8 9 override func viewDidLoad() { 10 super.viewDidLoad() 11 12 self.view.backgroundColor = UIColor.rgb(r: 204, g: 250, b: 125, alpha: 1) 13 14 // Do any additional setup after loading the view. 15 } 16 17 @IBAction func AddBtr(_ sender: Any) { 18 let alert = UIAlertController(title: "タイトル", message: "メッセージ", preferredStyle: .alert) 19 20 // OKボタンの設定 21 let okAction = UIAlertAction(title: "OK", style: .default, handler: { 22 (action:UIAlertAction!) -> Void in 23 24 // OKを押した時入力されていたテキストを表示 25 if let textFields = alert.textFields { 26 27 // アラートに含まれるすべてのテキストフィールドを調べる 28 for textField in textFields { 29 //self.item.insert(textField.text!, at: 0) 30 self.data.append(textField.text!) 31 //self.EditViewTabelView?.insertRows(at: [IndexPath(row: 0, section: 0)],with: UITableViewRowAnimation.automatic) 32 self.EditViewTabelView?.insertRows(at: [IndexPath(row: 0, section: 0)], with: .automatic) 33 print(textField.text!) 34 } 35 self.EditViewTabelView?.reloadData() 36 } 37 }) 38 alert.addAction(okAction) 39 40 // キャンセルボタンの設定 41 let cancelAction = UIAlertAction(title: "Cancel", style: .cancel, handler: nil) 42 alert.addAction(cancelAction) 43 44 // テキストフィールドを追加 45 alert.addTextField(configurationHandler: {(textField: UITextField!) -> Void in 46 textField.placeholder = "テキスト" 47 }) 48 alert.view.setNeedsLayout() // シミュレータの種類によっては、これがないと警告が発生 49 50 self.present(alert, animated: true, completion: nil) 51 } 52 53 func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int { 54 return data.count 55 } 56 57 func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { 58 let Cell = tableView.dequeueReusableCell(withIdentifier: "cell3", for: indexPath) 59 60 Cell.textLabel?.text = data[indexPath.row] 61 62 return Cell 63 } 64 65 override func didReceiveMemoryWarning() { 66 super.didReceiveMemoryWarning() 67 // Dispose of any resources that can be recreated. 68 } 69 70}

実現したい事

tabelViewにテキストを挿入させたい。

困っている事

@IBOutlet weak var EditViewTabelView: UITableView!だとオプショル型のせいで挿入する時に```insertRows``で落ちる。

なので@IBOutlet weak var EditViewTabelView = UITableView()にしてみたところ落ちる事はなくなったがテキストが挿入されなくて困っている。
それで念のためにprintfを入れてみたところデバッグには入力したテキストが表示されているのでなぜcellに挿入されないのかを知りたい。

追記

tabelviewインスタンスでは問題はなかったっぽいです。

self.EditViewTabelView?.insertRows(at: [IndexPath(row: 0, section: 0)], with: .automatic)
でEditViewTabelViewに?をつけないと落ちて、つけると落ちなくはなりますがテキストが挿入されないです。
container viewを使わないviewでは今回のようなエラーはなかったです。しかし今回はtabelの上にボタンを乗せたかったのでcontainer viewを使ったところ落ちるようになりました。


イメージ説明

参考文献

http://blog.all-in.xyz/2016/06/20/how-to-put-button-on-tableview-which-will-not-scroll-with-table/

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

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

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

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

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

guest

回答1

0

ベストアンサー

@IBOutlet weak var EditViewTabelView: UITableView!は問題ないです、戻してください。

自分の手元では動いたので、おそらくセルをTableViewに設定してIdentifirecell3にしてないのではないでしょうか?

TableViewに設定していなくてxibで定義しているのであればregisterする必要があります。

投稿2018/06/11 15:28

編集2018/06/11 15:31
_Kentarou

総合スコア8490

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

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

退会済みユーザー

退会済みユーザー

2018/06/11 15:47

ストーリーボード上でcell3にはしています。それとcontainer viewを使うまでは問題なくテキストを挿入できていました。なので私としてはcontainer viewのせいではないかと思うのですが何が原因なのかがわかりません。 ただ、container viewのファイルを作らずcontainer viewとEditViewControllerファイルを紐づけて上のボタンのコードをEditViewController内に書いたからなのでしょうか? EditViewControllerファイルは元々、EditViewTabelView用のソースファイルです。
_Kentarou

2018/06/12 04:15

containerの中に配置したのViewControllerの話ですか?
_Kentarou

2018/06/12 13:06

コンテナーを使用している理由が全く分からないのですが、何をしたいのでしょうか? コンテナーの乗っているViewContreollerをEditViewControllerではない別のクラスにすればよいのでは? EditViewControllerを使用しているクラスが2つあり片方はTableViewがあり片方はないということでのエラーだと思いますよ。
退会済みユーザー

退会済みユーザー

2018/06/12 14:59 編集

質問にイメージの画像を追記しました。画像のようなボタンをイメージしています。
退会済みユーザー

退会済みユーザー

2018/06/12 15:10

指摘されたコンテナーについて、早速コンテナーを利用せずに試してみた所意図した動作を実現する事が出来ました。 ご迷惑と時間をお掛けしてすいませんでした。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問