###前提・実現したいこと
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
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/12/03 06:34
2017/12/03 09:06
2017/12/03 09:12