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

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

解決済

1回答

2998閲覧

Thread 1: signal SIGABRT

RokuroYamaki

総合スコア13

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

投稿2017/12/03 01:55

###前提・実現したいこと
iosアプリ開発初心者です。storyboardのsegueを使って画面遷移を行いたいのですが、下記のエラーメッセージが出て画面遷移が行われません。storyboardでのミスが原因だということは調べてわかりましたが、どこを直せばいいのかわかりません。詳しい原因の突き止め方と解決方法を教えて欲しいです。

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

Thread 1: signal SIGABRT

###該当のソースコード
secondViewController.swift
addbuttonを押すと画面遷移が行なわれる

import UIKit class SecondViewController: UIViewController { //makingfolderのキャンセルボタン(キャンセルを押した時、この画面に戻る) @IBAction func backToMyFolder(segue: UIStoryboardSegue) {} //NavigasionBarのoutlet @IBOutlet weak var NavigationBar: UINavigationBar! //addbuttonのoutlet @IBOutlet weak var addbutton: UIBarButtonItem! //deitbuttonのアウトレット @IBOutlet weak var editbutton: UIBarButtonItem! override func viewDidLoad() { super.viewDidLoad() // Do any additional setup after loading the view, typically from a nib. } override func didReceiveMemoryWarning() { super.didReceiveMemoryWarning() // Dispose of any resources that can be recreated. } }

makingfolder.swift
画面遷移先のviewcontroller

import UIKit class makingfolder: UIViewController,UIPickerViewDelegate,UIPickerViewDataSource { //フォルダのタイプのUITextFieldのoutlet @IBOutlet weak var TypeOfFolder: UITextField! //TypeOfFolderのpickerview変数 var pickerView4: UIPickerView = UIPickerView() //フォルダの種類のリスト let list4 = ["豆知識型フォルダ","クイズ型フォルダ"] //viewDidLoad///////////////////////////////////////////////////// override func viewDidLoad() { super.viewDidLoad() /////TypeOfFolder///////////////////////////////// pickerView4.tag = 4 pickerView4.delegate = self pickerView4.dataSource = self //toolbarの座標 let toolbarForTypeOfFolder = UIToolbar(frame:CGRectMake(0,0,0,35)) //doneボタン let doneItemForTypeOfFolder = UIBarButtonItem(barButtonSystemItem: .done, target: self, action: #selector(makingfolder.done)) //ボタンの配置 toolbarForTypeOfFolder.setItems([doneItemForTypeOfFolder],animated:true) //viewにインプットする self.TypeOfFolder.inputView = pickerView4 self.TypeOfFolder.inputAccessoryView = toolbarForTypeOfFolder } //viewDidLoadの末尾 //////////////////////////////////////////////////////////// //UIpickerViewの関数/////////////////////////////////// // ロールの列の数を決める関数 func numberOfComponents(in pickerView: UIPickerView) -> Int { return 1 //<<<<<列の数 } //列の数を用意する関数 func pickerView(_ pickerView: UIPickerView, numberOfRowsInComponent component: Int) -> Int { if pickerView.tag == 4 { // <<<<<if文でlistを使い分ける return list4.count } else { return list4.count } } //不明 func pickerView(_ pickerView: UIPickerView, titleForRow row: Int, forComponent component: Int) -> String? { if pickerView.tag == 4 { // <<<<<<<<<< 変更 return list4[row] }else { return list4[row] } } //実際にリストのテキストを表示する関数 func pickerView(_ pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int) { if pickerView.tag == 4 { // <<<<<<<<<< 変更 TypeOfFolder.text = list4[row] } else { print("error") } } //doneボタンの関数 @objc func done() { view.endEditing(true) } //CGRectMake関数はデフォルトには無くなったため、自ら作らなければならない func CGRectMake(_ x: CGFloat, _ y: CGFloat, _ width: CGFloat, _ height: CGFloat) -> CGRect { return CGRect(x: x, y: y, width: width, height: height) } override func didReceiveMemoryWarning() { super.didReceiveMemoryWarning() // Dispose of any resources that can be recreated. } }

###試したこと
・再起動
・storyboardとの接続ミスの確認。←自分が見たところスペルミスや接続が失敗しているときに表示される黄色い三角マークはありませんでした。
・画面遷移が行われないと書きましたが、画面遷移先のviewcontrollerにあるTypeOfFolderオブジェクトをストーリーボード上で削除すると問題なく画面遷移が行われます←そのためエラーの原因がこのTypeOfFolderにあると考えています
・0x10ac185e8 <+159>: movq 0x115d001(%rip), %rbx ; (void *)0x000000010a38fcc0: objc_release  ←エラー発生時のログです。このログで上記のエラーメッセージが出ます

###補足情報(言語/FW/ツール等のバージョンなど)
Xcode version9.1
MacOS Sierra version10.12.6
swift4

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

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

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

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

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

guest

回答1

0

ベストアンサー

Outputの部分にもうちょっと細かい理由出てませんか?
Storyboard上で問題のUITextFieldを右クリックしたときに出てくる接続のポップアップでReference Outletの接続が複数になってたり、Reference Outletかdelegateあたりが別のViewControllerになってたりしませんかね?
ViewController側の名前を変えたのでStoryboardからControl+ドラッグで繋ぎなおしたけど元の接続を削除し忘れてクラッシュ、というのはありがちなネタですが。

投稿2017/12/03 04:21

toki_td

総合スコア2850

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

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

RokuroYamaki

2017/12/03 06:34

回答ありがとうございます。outletの接続ミスをもう一度確認して見たところ、outletのところでMakingFolder does not have a outlet named TypeOfFolder とエラーが出ていました。原因はここだと思われるのですが、このエラーの解決方法をご存知ですか?
toki_td

2017/12/03 09:06

↑に書かれているコードだとmakingfolderとなっていますがMakingFolderでしょうか? 大文字小文字は区別されるのでそれのせいでは?一度削除して接続しなおしたらどうでしょう?
RokuroYamaki

2017/12/03 09:12

ViewControllerを最初から作り直したら、解決しました!ありがとうございました!!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問