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

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

新規登録して質問してみよう
ただいま回答率
85.50%
Xcode 7

Xcode 7は、ソフトウェア開発のためのアップルの統合開発環境であるXcodeのバージョン。UIを作成するために用いるグラフィカルツールです。iOS9/OS X El Capitan/watchOS2に対応。Swift 2コンパイラーが搭載されています。

Swift 2

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

Q&A

解決済

1回答

1975閲覧

閉じるボタンを押すとエラーが発生するようになった

M.minoru

総合スコア19

Xcode 7

Xcode 7は、ソフトウェア開発のためのアップルの統合開発環境であるXcodeのバージョン。UIを作成するために用いるグラフィカルツールです。iOS9/OS X El Capitan/watchOS2に対応。Swift 2コンパイラーが搭載されています。

Swift 2

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

0グッド

0クリップ

投稿2016/07/25 08:10

###前提・実現したいこと

Storyboardで先日Viewを並べて作ったものを Tableで作りなおしたのですがコードは特に変えていないのに実行してTextFieldをクリックしキーボードまたはPickerのToolbarにある完了(押すとキーボードなどを閉じるボタン)を押すとエラーが起きてしまいます

エラーの発生場所はAppDelegateの以下の場所でした
@UIApplicationMain
class AppDelegate: UIResponder, UIApplicationDelegate {

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

Thread 1:signal SIGABRT

swift

1import UIKit 2 3class kinmuTable: UITableViewController, UITextFieldDelegate, UIPickerViewDataSource, UIPickerViewDelegate, UIToolbarDelegate { 4 5 //配列の作成 6 let furikyuuList = ["","○",] 7 let chouseiList = ["","電車遅延","シフト勤務","変則シフト","早出遅出","本社出勤","本社退社","本社終日","客都出社"] 8 9 @IBOutlet weak var kaishi: UITextField! 10 @IBOutlet weak var syuuryou: UITextField! 11 @IBOutlet weak var hosei: UITextField! 12 @IBOutlet weak var sagyou: UILabel! 13 @IBOutlet weak var zangyou: UILabel! 14 @IBOutlet weak var shinya: UILabel! 15 @IBOutlet weak var kintai: UILabel! 16 @IBOutlet weak var kyuuka: UITextField! 17 @IBOutlet weak var chousei: UITextField! 18 @IBOutlet weak var furikyuu: UITextField! 19 20 var toolBar:UIToolbar! 21 22 //pickerViewの宣言 23 let furikyuuSentaku = UIPickerView() 24 let chouseiSentaku = UIPickerView() 25 26 //今日の日付を代入 27 let nowDate = NSDate() 28 let dateFormat = NSDateFormatter() 29 30 //DatePickerの宣言 31 let kaishiSentaku = UIDatePicker() 32 let syuuryouSentaku = UIDatePicker() 33 let hoseiSentaku = UIDatePicker() 34 35 override func viewDidLoad() { 36 super.viewDidLoad() 37 38 // Do any additional setup after loading the view. 39 40 furikyuuSentaku.delegate = self 41 furikyuuSentaku.dataSource = self 42 chouseiSentaku.delegate = self 43 chouseiSentaku.dataSource = self 44 self.kaishi.delegate = self 45 self.syuuryou.delegate = self 46 self.hosei.delegate = self 47 48 //tag設定 49 furikyuuSentaku.tag = 0 50 chouseiSentaku.tag = 1 51 52 kaishiSentaku.tag = 0 53 syuuryouSentaku.tag = 1 54 hoseiSentaku.tag = 2 55 56 //Pickerviewを入れる 57 furikyuu.inputView = furikyuuSentaku 58 chousei.inputView = chouseiSentaku 59 60 //日付フィールドの設定 61 dateFormat.dateFormat = "HH:mm" 62 kaishi.text = dateFormat.stringFromDate(nowDate) 63 syuuryou.text = dateFormat.stringFromDate(nowDate) 64 hosei.text = dateFormat.stringFromDate(nowDate) 65 66 //datepickerを日本語にする 67 kaishiSentaku.locale = NSLocale(localeIdentifier: "ja_JP") 68 syuuryouSentaku.locale = NSLocale(localeIdentifier: "ja_JP") 69 hoseiSentaku.locale = NSLocale(localeIdentifier: "ja_JP") 70 71 // DatePickerの設定(日付用) 72 kaishiSentaku.datePickerMode = UIDatePickerMode.Time 73 kaishi.inputView = kaishiSentaku 74 syuuryouSentaku.datePickerMode = UIDatePickerMode.Time 75 syuuryou.inputView = syuuryouSentaku 76 hoseiSentaku.datePickerMode = UIDatePickerMode.Time 77 hosei.inputView = hoseiSentaku 78 79 80 // UIToolBarの設定 81 toolBar = UIToolbar(frame: CGRectMake(0, self.view.frame.size.height/6, self.view.frame.size.width, 40.0)) 82 toolBar.layer.position = CGPoint(x: self.view.frame.size.width/2, y: self.view.frame.size.height-20.0) 83 toolBar.barStyle = .BlackTranslucent 84 toolBar.tintColor = UIColor.whiteColor() 85 toolBar.backgroundColor = UIColor.blackColor() 86 87 //完了ボタンのセット 88 //右寄せのためのスペース設定 89 let spaceBarBtn = UIBarButtonItem(barButtonSystemItem: UIBarButtonSystemItem.FlexibleSpace,target: self,action: Selector("")) 90 91 //設置 92 let toolBarBtn = UIBarButtonItem(title: "完了", style: .Done, target: self, action: Selector("toolBarBtnPush:")) 93 94 //ツールバーにボタンを表示 95 toolBar.items = [spaceBarBtn,toolBarBtn] 96 97 kaishi.inputAccessoryView = toolBar 98 syuuryou.inputAccessoryView = toolBar 99 hosei.inputAccessoryView = toolBar 100 kyuuka.inputAccessoryView = toolBar 101 chousei.inputAccessoryView = toolBar 102 furikyuu.inputAccessoryView = toolBar 103 104 } 105 106 override func didReceiveMemoryWarning() { 107 super.didReceiveMemoryWarning() 108 // Dispose of any resources that can be recreated. 109 } 110 111 // 項目の数 112 func numberOfComponentsInPickerView(pickerView: UIPickerView) -> Int { 113 114 return 1 115 } 116 117 // 要素数 118 func pickerView(pickerView: UIPickerView, numberOfRowsInComponent component: Int) -> Int { 119 120 if pickerView.tag == 0{ 121 return self.furikyuuList.count 122 } 123 if pickerView.tag == 1{ 124 return self.chouseiList.count 125 } 126 return 0 127 } 128 129 //要素を表す文字列 130 func pickerView(pickerView: UIPickerView, titleForRow row: Int, forComponent component: Int) -> String? { 131 132 if pickerView.tag == 0{ 133 return self.furikyuuList[row] 134 } 135 if pickerView.tag == 1{ 136 return self.chouseiList[row] 137 } 138 return "" 139 } 140 141 //テキストフィールドに表示 142 func pickerView(pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int) { 143 144 if pickerView.tag == 0{ 145 furikyuu.text = self.furikyuuList[row] 146 } 147 if pickerView.tag == 1{ 148 chousei.text = self.chouseiList[row] 149 } 150 } 151 152 func pickerView(pickerView: UIPickerView, rowHeightForComponent component: Int) -> CGFloat { 153 return 50 154 } 155 156 // 「完了」を押すと閉じる 157 func tappedToolBarBtn(sender: UIBarButtonItem) { 158 159 kaishi.text = dateFormat.stringFromDate(kaishiSentaku.date) 160 syuuryou.text = dateFormat.stringFromDate(syuuryouSentaku.date) 161 hosei.text = dateFormat.stringFromDate(hoseiSentaku.date) 162 163 kaishi.resignFirstResponder() 164 syuuryou.resignFirstResponder() 165 hosei.resignFirstResponder() 166 kyuuka.resignFirstResponder() 167 chousei.resignFirstResponder() 168 furikyuu.resignFirstResponder() 169 170 } 171

###試したこと
コードの転載ミスがないかのチェックは行いました

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

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

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

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

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

_Kentarou

2016/07/25 12:19

アプリが落ちた際デバックログのエリアには何も出力されていませんでしたか?されているのでしたら、そちらも載せてください。
M.minoru

2016/07/26 00:18

デバッグエリアには以下の出力がありました。 ``` 2016-07-26 09:12:11.182 KinmuTable[667:13221] -[KinmuTable.kinmuTable toolBarBtnPush:]: unrecognized selector sent to instance 0x7faa41da5740 2016-07-26 09:12:11.186 KinmuTable[667:13221] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[KinmuTable.kinmuTable toolBarBtnPush:]: unrecognized selector sent to instance 0x7faa41da5740' *** First throw call stack: ( 0 CoreFoundation 0x000000010df1cd85 __exceptionPreprocess + 165 1 libobjc.A.dylib 0x000000010fcc0deb objc_exception_throw + 48 2 CoreFoundation 0x000000010df25d3d -[NSObject(NSObject) doesNotRecognizeSelector:] + 205 3 CoreFoundation 0x000000010de6bcfa ___forwarding___ + 970 4 CoreFoundation 0x000000010de6b8a8 _CF_forwarding_prep_0 + 120 5 UIKit 0x000000010e746a8d -[UIApplication sendAction:to:from:forEvent:] + 92 6 UIKit 0x000000010eb54067 -[UIBarButtonItem(UIInternal) _sendAction:withEvent:] + 152 7 UIKit 0x000000010e746a8d -[UIApplication sendAction:to:from:forEvent:] + 92 8 UIKit 0x000000010e8b9e67 -[UIControl sendAction:to:forEvent:] + 67 9 UIKit 0x000000010e8ba143 -[UIControl _sendActionsForEvents:withEvent:] + 327 10 UIKit 0x000000010e8ba2be -[UIControl _sendActionsForEvents:withEvent:] + 706 11 UIKit 0x000000010e8b9263 -[UIControl touchesEnded:withEvent:] + 601 12 UIKit 0x000000010e7b999f -[UIWindow _sendTouchesForEvent:] + 835 13 UIKit 0x000000010e7ba6d4 -[UIWindow sendEvent:] + 865 14 UIKit 0x000000010e765dc6 -[UIApplication sendEvent:] + 263 15 UIKit 0x000000010e73f553 _UIApplicationHandleEventQueue + 6660 16 CoreFoundation 0x000000010de42301 __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE0_PERFORM_FUNCTION__ + 17 17 CoreFoundation 0x000000010de3822c __CFRunLoopDoSources0 + 556 18 CoreFoundation 0x000000010de376e3 __CFRunLoopRun + 867 19 CoreFoundation 0x000000010de370f8 CFRunLoopRunSpecific + 488 20 GraphicsServices 0x00000001125b2ad2 GSEventRunModal + 161 21 UIKit 0x000000010e744f09 UIApplicationMain + 171 22 KinmuTable 0x000000010dd262e2 main + 114 23 libdyld.dylib 0x000000011078492d start + 1 24 ??? 0x0000000000000001 0x0 + 1 ) libc++abi.dylib: terminating with uncaught exception of type NSException (lldb) ```
guest

回答1

0

ベストアンサー

以下のコードで完了ボタン押下時のアクションがtoolBarBtnPush:に設定されていますがコードを見る限り設定されていませんのでメソッドがなく落ちています。

swift

1//設置 2let toolBarBtn = UIBarButtonItem(title: "完了", style: .Done, target: self, action: Selector("toolBarBtnPush:")) 3

完了時のイベントはtappedToolBarBtn:というアクションがあるのでこれと紐付けるように修正する(メソッド名を同じ名前にする)と大丈夫だと思います。

swift

1// 「完了」を押すと閉じる 2func tappedToolBarBtn(sender: UIBarButtonItem) { 3

投稿2016/07/26 03:29

_Kentarou

総合スコア8490

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

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

M.minoru

2016/07/26 04:57

無事に解決することができました ありがとうございます
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問