🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
TableView

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

Swift

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

Q&A

1回答

1157閲覧

Swiftでチャット画面上に送信のtextfieldとボタンを実装したところFatal error: init(coder:) has not been implementedと言われた。

Naoki_swift

総合スコア0

TableView

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

Swift

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

0グッド

0クリップ

投稿2021/01/04 10:09

チャット画面を作成中にうまく実装ができない

チャット画面を作成しています。
tableviewを作成し、そこにチャットを書いています。
その後に、送信用のテキストと送信ボタンを持つxibをtableviewの上に置いたのですが、そこでエラーが出てしまい、止まっています。

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

Thread 1: Fatal error: init(coder:) has not been implemented

該当のソースコード

Swift

1#送信用テキストとボタンの部分 2 3import UIKit 4 5class ChatInputAccessoryView: UIView { 6 7 override init(frame: CGRect) { 8 super.init(frame: frame) 9 10 nibInit() 11 } 12 13 private func nibInit() { 14 let nib = UINib(nibName: "ChatInputAccessoryView", bundle: nil) 15 guard let view = nib.instantiate(withOwner: self, options: nil).first as? UIView else { return } 16 17 view.frame = self.bounds 18 view.autoresizingMask = [.flexibleHeight, .flexibleWidth] 19 self.addSubview(view) 20 } 21 22 required init?(coder: NSCoder) { 23 fatalError("init(coder:) has not been implemented") #ここでエラー 24 } 25 26}

Swift

1#チャット画面のソースコード 2 3import UIKit 4import ChameleonFramework 5import Firebase 6 7class ChatViewController: UIViewController { 8 9 private let cellId = "cellId" 10 11 private var chatInputAccessoryView: ChatInputAccessoryView = { 12 13 let view = ChatInputAccessoryView() 14 view.frame = .init(x: 0, y: 0, width: view.frame.width, height: 100) 15 return view 16 17 }() 18 19 @IBOutlet weak var tableView: UITableView! 20 21 override func viewDidLoad() { 22 23 tableView.delegate = self 24 tableView.dataSource = self 25 tableView.register(UINib(nibName: "CustomCell", bundle: nil), forCellReuseIdentifier: cellId) 26 tableView.backgroundColor = .rgb(red: 118, green: 140, blue: 180) 27 28 } 29 30 override var inputAccessoryView: UIView? { 31 32 return chatInputAccessoryView 33 34 } 35 36 override var canBecomeFirstResponder: Bool { 37 return true 38 } 39 40} 41 42extension ChatViewController: UITableViewDelegate, UITableViewDataSource{ 43 44 func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat { 45 46 tableView.estimatedRowHeight = 50 47 48 return UITableView.automaticDimension 49 } 50 51 func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int { 52 return 10 53 } 54 55 func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { 56 let cell = tableView.dequeueReusableCell(withIdentifier: cellId, for: indexPath) 57 58 return cell 59 } 60 61 62} 63 64

わかっている部分

Fatalerrorと出ているため、storyboardに置くときにエラーが出ていると思います。

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

以下のyoutubeを参考にしました。
https://www.youtube.com/watch?v=5rqbm3rj3f0

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

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

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

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

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

hoshi-takanori

2021/01/04 10:26

ChatInputAccessoryView が storyboard か xib に間違って置かれてるのでは?
Naoki_swift

2021/01/04 10:34

回答ありがとうございます! ChatInputAccessoryViewはChatViewControllerに紐ずくstoryboardの上に置きたいのですが、それでエラーが出てしまうのですか?
hoshi-takanori

2021/01/04 10:39

ChatInputAccessoryView そのものは ChatViewController で作ってるので storyboard に置く必要はないし、ChatInputAccessoryView の中身は xib ファイルに書いてえるようですが、addChildview してるので、xib にも ChatInputAccessoryView そのものは置く必要がないはずです。
Naoki_swift

2021/01/05 06:40

なぜこのようなエラーが出ているのかわからないのですが、お聞きしてもよろしいですか?
guest

回答1

0

憶測ですが、ChatInputAccessoryView.xib のトップレベルのビューを選択したら、

イメージ説明

右上の Custom Class のところに ChatInputAccessoryView と出てくるのでは。

イメージ説明

その場合、クラス名を消していいはずです。

投稿2021/01/05 07:46

hoshi-takanori

総合スコア7899

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

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

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

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

ただいまの回答率
85.36%

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

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

質問する

関連した質問