前提・実現したいこと
xcodeで以下の写真のようなタイムテーブルを作ろうとしています。PickerViewで場所を選択、SegmentedControlで日時を選択し、それに合ったtableviewを表示するというようにしたいです。
しかし、エラーは一切出ないでBuildできるにも関わらず、tableviewに何も表示されません。
また、SegmentedControlをタップすると、Thread 1: signal SIGABRTがAppDelegateに出てしまいます。どのように書き換えたらよいでしょうか。
コード全体
EventViewController.swift
1 2import UIKit 3 4class EventViewController: UIViewController 5 , UIPickerViewDelegate, UIPickerViewDataSource 6 , UITableViewDelegate, UITableViewDataSource 7{ 8 var pickerView: UIPickerView = UIPickerView() 9 let list = ["1", "2"] 10 var place = String() 11 var date = String() 12 13 //StoryBoardでは基本的に設定を変えていません。タグを変えたぐらいです。 14 15 @IBOutlet weak var textField: UITextField! 16 @IBOutlet var timetable: UITableView! 17 @IBAction func daysegment(sender: UISegmentedControl) { 18 19 switch sender.selectedSegmentIndex { 20 case 0: 21 date = "Day1" 22 case 1: 23 date = "Day2" 24 default: 25 break 26 } 27 } 28 29 30 //写真array 31 let place1imgArrayDay1: NSArray = [ 32 "","","","","" 33 ] 34 let place2imgArrayDay1: NSArray = [ 35 "","","","","" 36 ] 37 let place1imgArrayDay2: NSArray = [ 38 "","","" 39 ] 40 let place2imgArrayDay2: NSArray = [ 41 "","","","" 42 ] 43 44 //nameラベルarray 45 let place1nameArrayDay1: NSArray = [ 46 "","","","","" 47 ] 48 let place2nameArrayDay1: NSArray = [ 49 "","","","","" 50 ] 51 let place1nameArrayDay2: NSArray = [ 52 "","","" 53 ] 54 let place2nameArrayDay2: NSArray = [ 55 "","","","" 56 ] 57 58 //timeラベルarray 59 let place1timeArrayDay1: NSArray = [ 60 "","","","","" 61 ] 62 let place2timeArrayDay1: NSArray = [ 63 "","","","","" 64 ] 65 let place1timeArrayDay2: NSArray = [ 66 "","","" 67 ] 68 let place2timeArrayDay2: NSArray = [ 69 "","","","" 70 ] 71 72//実際は画像、ラベルが入っています。 73 74 75 override func viewDidLoad() { 76 super.viewDidLoad() 77 78 pickerView.delegate = self 79 pickerView.dataSource = self 80 pickerView.showsSelectionIndicator = true 81 82 let toolbar = UIToolbar(frame: CGRectMake(0, 0, 0, 35)) 83 let doneItem = UIBarButtonItem(barButtonSystemItem: .done, target: self, action: #selector(EventViewController.done)) 84 toolbar.setItems([doneItem], animated: true) 85 86 self.textField.inputView = pickerView 87 self.textField.inputAccessoryView = toolbar 88 self.textField.text = list[0] 89 self.timetable.dataSource = self 90 self.timetable.delegate = self 91 } 92 93 func numberOfComponents(in pickerView: UIPickerView) -> Int { 94 return 1 95 } 96 97 func pickerView(_ pickerView: UIPickerView, numberOfRowsInComponent component: Int) -> Int { 98 return list.count 99 } 100 101 func pickerView(_ pickerView: UIPickerView, titleForRow row: Int, forComponent component: Int) -> String? { 102 return list[row] 103 } 104 105 func pickerView(_ pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int) { 106 self.textField.text = list[row] 107 } 108 109 @objc func done() { 110 self.textField.endEditing(true) 111 place = textField.text! 112 } 113 114 func CGRectMake(_ x: CGFloat, _ y: CGFloat, _ width: CGFloat, _ height: CGFloat) -> CGRect { 115 return CGRect(x: x, y: y, width: width, height: height) 116 } 117 118 func tableView(_ table: UITableView, 119 numberOfRowsInSection section: Int) -> Int { 120 121 if place == "1", date == "Day1" { 122 return place1imgArrayDay1.count 123 }else if place == "2", date == "Day1" { 124 return place2imgArrayDay1.count 125 }else if place == "1", date == "Day2" { 126 return place1imgArrayDay2.count 127 }else if place == "2", date == "Day2" { 128 return place2imgArrayDay2.count 129 }else { 130 131 } 132 return place1imgArrayDay1.count 133 } 134 func tableView(_ timetable: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { 135 136 let cell = timetable.dequeueReusableCell(withIdentifier: "tableCell",for: indexPath) 137 cell.selectionStyle = UITableViewCellSelectionStyle.none 138 139 if place == "1", date == "Day1" { 140 let img = UIImage(named: place1imgArrayDay1[indexPath.row] as! String) 141 142 let imageView = cell.viewWithTag(1) as! UIImageView 143 imageView.image = img 144 145 let label1 = cell.viewWithTag(2) as! UILabel 146 label1.text = String(describing: place1nameArrayDay1[indexPath.row]) 147 label1.adjustsFontSizeToFitWidth = true 148 149 let label2 = cell.viewWithTag(3) as! UILabel 150 label2.text = String(describing: place1timeArrayDay1[indexPath.row]) 151 label2.adjustsFontSizeToFitWidth = true 152 }else if place == "1", date == "Day2" { 153 let img = UIImage(named: place1imgArrayDay2[indexPath.row] as! String) 154 155 let imageView = cell.viewWithTag(1) as! UIImageView 156 imageView.image = img 157 158 let label1 = cell.viewWithTag(2) as! UILabel 159 label1.text = String(describing: place1nameArrayDay2[indexPath.row]) 160 label1.adjustsFontSizeToFitWidth = true 161 162 let label2 = cell.viewWithTag(3) as! UILabel 163 label2.text = String(describing: place1timeArrayDay2[indexPath.row]) 164 label2.adjustsFontSizeToFitWidth = true 165 }else if place == "2", date == "Day1" { 166 let img = UIImage(named: place2imgArrayDay1[indexPath.row] as! String) 167 168 let imageView = cell.viewWithTag(1) as! UIImageView 169 imageView.image = img 170 171 let label1 = cell.viewWithTag(2) as! UILabel 172 label1.text = String(describing: place2nameArrayDay1[indexPath.row]) 173 label1.adjustsFontSizeToFitWidth = true 174 175 let label2 = cell.viewWithTag(3) as! UILabel 176 label2.text = String(describing: place2timeArrayDay1[indexPath.row]) 177 label2.adjustsFontSizeToFitWidth = true 178 }else if place == "2", date == "Day2" { 179 let img = UIImage(named: place2imgArrayDay2[indexPath.row] as! String) 180 181 let imageView = cell.viewWithTag(1) as! UIImageView 182 imageView.image = img 183 184 let label1 = cell.viewWithTag(2) as! UILabel 185 label1.text = String(describing: place2nameArrayDay2[indexPath.row]) 186 label1.adjustsFontSizeToFitWidth = true 187 188 let label2 = cell.viewWithTag(3) as! UILabel 189 label2.text = String(describing: place2timeArrayDay2[indexPath.row]) 190 label2.adjustsFontSizeToFitWidth = true 191 } 192 else { 193 194 } 195 196 197 return cell 198 } 199 200 201 func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat { 202 return 120.0 203 } 204 205 override func didReceiveMemoryWarning() { 206 super.didReceiveMemoryWarning() 207 // Dispose of any resources that can be recreated. 208 } 209 210 211}
Storyboardの状況
バージョン
xcode 9, swift 4, iOS 11.3
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2018/04/08 07:08
2018/04/08 07:26 編集
退会済みユーザー
2018/04/08 17:38
2018/04/08 22:43 編集
2018/04/09 07:25 編集
退会済みユーザー
2018/04/09 22:48
2018/04/10 00:49
退会済みユーザー
2018/04/11 09:08
退会済みユーザー
2018/04/11 15:04
2018/04/11 22:33
退会済みユーザー
2018/04/12 04:19
2018/04/12 06:04 編集
退会済みユーザー
2018/04/12 08:23