###前提・実現したいこと
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
###試したこと
コードの転載ミスがないかのチェックは行いました
アプリが落ちた際デバックログのエリアには何も出力されていませんでしたか?されているのでしたら、そちらも載せてください。
デバッグエリアには以下の出力がありました。
```
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)
```
回答1件
あなたの回答
tips
プレビュー