前提・実現したいこと
ラインのようなアプリを作っています。
メッセージが表示される画面の下にメッセージを入力するxibを表示させようとしたところ、読み込み途中にsimulatorが落ちてしまいました。
top画面からメッセージのページに移動したとき下にメッセージを入力するxibが表示されるようにしたいです。
どなたか分かる方がいましたらご教授願います。
発生している問題・エラーメッセージ
Thread 1: Exception: "Could not load NIB in bundle: 'NSBundle </Users/urs/Library/Developer/CoreSimulator/Devices/39C1E254-37A0-4FF3-8E90-ABD8997AB3D1/data/Containers/Bundle/Application/69657211-09DB-49A3-BC19-2EE4AC67216D/ChatAppwithFirebase.app> (loaded)' with name 'ChatInputAccessoryView'"
該当のソースコード
swift
1// ChatRoomViewController.swift 2 3import UIKit 4 5class ChatRoomViewController: UIViewController { 6 7 private let cellId = "cellId" 8 9 private var chatInputAccessoryView: ChatInputAccessoryView = { 10 let view = ChatInputAccessoryView() 11 view.frame = .init(x: 0, y: 0, width: view.frame.width, height: 100) 12 return view 13 }() 14 15 @IBOutlet weak var chatRoomTableView: UITableView! 16 17 override func viewDidLoad() { 18 super.viewDidLoad() 19 20 chatRoomTableView.delegate = self 21 chatRoomTableView.dataSource = self 22 chatRoomTableView.register(UINib(nibName: "ChatRoomTableViewCell", bundle: nil), forCellReuseIdentifier: cellId) 23 chatRoomTableView.backgroundColor = .rgb(red: 118, green: 140, blue: 100) 24 } 25 26 override var inputAccessoryView: UIView? { 27 get { 28 return chatInputAccessoryView 29 } 30 } 31 32 override var canBecomeFirstResponder: Bool { 33 return true 34 } 35} 36 37extension ChatRoomViewController: UITableViewDelegate,UITableViewDataSource { 38 39 func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat { 40 chatRoomTableView.estimatedRowHeight = 20 41 return UITableView.automaticDimension 42 } 43 44 func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int { 45 return 10 46 } 47 48 func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { 49 let cell = chatRoomTableView.dequeueReusableCell(withIdentifier: cellId, for: indexPath) 50 return cell 51 } 52}
swift
1// ChatInputAccessoryView.swift 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}
試したこと
inputがiputになっていたのでinputに直しました。
ファイル名などをタイピンングで打って書いたのでファイル名をコピペしてコードに入れ直しました。
補足情報(FW/ツールのバージョンなど)
xcode 11.7
macos catalina 10.15.6
https://www.youtube.com/watch?v=Iu_sax4AEjw&list=LLRUlcazP15l6ofFC-mcgksQ&index=2&t=595s
この動画を見て作ろうとしていました。
xibファイルは作られたのでしょうか。
「ファイル名をコピペして」とありますが、これはどこかに載っていたコードを参考にされたのでしょうか。
そうであれば、URLなどもご質問本文に追記していただければと思います。
URLの動画(EP3)の1分30秒あたりから xib ファイルの作り方について説明があるようですが、その手順通りにされているか、もう一度確認されるといいかと思います。
ChatViewController.swift
ChatViewController.nib
この2つのファイルがフォルダ内に作成されているはずです。
返信ありがとうございます。
xibファイルは作成してあります。
ChatInputAccesoryView.xib
ChatRoomViewController.swift
この2つがフォルダ内にあります。
このファイルができる前まではちゃんと動いていたので、多分このファイルのどこかがおかしいと思っているのですが、どうしても見つけられません。
ソースコード内のファイル名:ChatInputAccessoryView
上記コメントのファイル名:ChatInputAccesoryView
ソースコード内のファイル名はssとsが二つ、コメント中のファイル名はsが一つと異なっていますが、それは大丈夫でしょうか。
アクセサリーの綴り気付きませんでした
直して実行したところうまくうごきました!
ありがとうございます????
それはよかったです(綴り間違いはよくあるので)。
では、自己解決しておいていただけますでしょうか。
わかりました。
本当にありがとうございました????
回答1件
あなたの回答
tips
プレビュー