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

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

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

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

Swift 2

Swift 2は、Apple社が独自に開発を行っている言語「Swift」のアップグレード版です。iOSやOS X、さらにLinuxにも対応可能です。また、throws-catchベースのエラーハンドリングが追加されています。

Q&A

解決済

2回答

3990閲覧

Signal SIGABRTエラー:Custom class表示されない

ZhiyuSon

総合スコア7

Swift

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

Swift 2

Swift 2は、Apple社が独自に開発を行っている言語「Swift」のアップグレード版です。iOSやOS X、さらにLinuxにも対応可能です。また、throws-catchベースのエラーハンドリングが追加されています。

0グッド

0クリップ

投稿2016/06/29 12:15

以下の箇所でエラーが表示されました。

let messageVC = storyboard.instantiateViewControllerWithIdentifier("MessageViewController") as! MessagesViewController

これがエラーが起こったキャプチャです。

イメージ説明
エラーの内容です。

Thread 1: signal SIGABRT

少し心当たりがあり、ViewControllerファイルでcustom classにあるclassに対象となるファイル名を記入しても予測変換もされず一覧にもありませんでした。

![イメージ説明

画像にある①のファイル(MessagesViewController.swift)に対応させたいです。
その場合に②のcustom classで対象となるファイル名(今回はMessagesViewController)
このファイル名の数文字を打てば、普通予測変換されます。

しかし自分の場合は予測変換されず一覧も見ると表示させたいファイルが存在しません。
ググった結果、このファイルがうまく読み取られていない事が原因でのエラーだと思っています。
ですが、詳しい解決方法が思いつきません。
初心者の質問ですがよろしくお願いいたします。

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

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

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

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

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

guest

回答2

0

ベストアンサー

パット見は合っているので⌘ + B で一度ビルドすると認識する場合があると思います。
※前提としてMessagesViewControllerUIViewControllerを継承している必要が有ります、あとStoryboard IDにはMessageViewControllerを指定してください。

コードを再確認したら、
let messageVC = storyboard.instantiateViewControllerWithIdentifier("MessageViewController") as! MessagesViewController

Storyboard IDとクラス名が違いましたこちらは揃えた方が間違いが少ないと思います。

投稿2016/06/29 14:09

編集2016/06/29 14:33
_Kentarou

総合スコア8490

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

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

ZhiyuSon

2016/06/29 14:43

MessagesViewControllerを再度作成してUIViewControllerをあてました。 そうしたら選択が出来ました。 ですがコピペしたソースコードにJSQMessagesViewControllerが含まれており、UIViewControllerと一緒に使っちゃ駄目だよと怒られUIViewControllerをけしてビルドをし直すという事を行ったら今度はAppDelegateファイルにThread 1: signal SIGABRTエラーが表示されました。 Kentarouさんの仰るようにStoryboardのIDとクラス名は揃えました。 もう少しトライしてみます。
_Kentarou

2016/06/29 14:50

class MessagesViewController: JSQMessagesViewController { ...... } と記述すれば良いと思いますが、どうでしょうか?
ZhiyuSon

2016/06/30 16:20

あれこれいじった結果動作しました。 おそらく一度UIViewControllerと記述するとstoryboard上のcustom classに反映され、 それで動きました。 Kentarouさんのアドバイスもまた非常に参考になりました。 ありがとうございます。
guest

0

MessageViewControllerの親クラスとStoryboadで追加したオブジェクトが違うとか?
例えばMessageViewControllerはUITableViewControllerのサブクラスで、StoryboadにはUIViewControllerのオブジェクトを追加したということはないですか?

投稿2016/06/29 13:57

u39ueda

総合スコア950

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

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

ZhiyuSon

2016/06/29 14:05

これはある教材のソースコードでデフォルトで設定されています。 疑わしいファイルのMessagesViewController.swiftですが他の似た種類のファイルを見比べてみて、他のファイルはUIViewControllerのサブクラスと書いてあります。JoinTeamViewController.swiftのように名前からもUIViewControllerから作成されていると推測出来ます。 僕も似た解決方法のページを読み、ファイルにUIViewControllerや一応UITableViewControllerを追加して試してみても表示されませんでした。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問