実現したいこと
swift初学者ですが、食べたものを日記のように記録できる簡易な記録アプリを作っています。
食べたものを後から日を遡って記録できるように、
食べた日付をUIDatePickerで選択し、
選択した日付のセクションにある文字(食べ物)を表示する配列に
ピンクのUITextfieldから記録をしたい食べたものを入力しButtonを押すと追加できるようにしたい。
以下、現在のソースコードです。
Swift5
1import UIKit 2 3class ViewController: UIViewController,UITableViewDelegate,UITableViewDataSource { 4 5 @IBOutlet weak var table: UITableView! 6 @IBOutlet weak var foodtextField: UITextField! 7 @IBOutlet weak var textField: UITextField! 8 9 var datePicker: UIDatePicker = UIDatePicker() 10 11 // section毎に配列を用意 12 var Array1: Array = ["コンビニ弁当"] 13 var Array2: Array = ["イタリアン"] 14 var Array3: Array = ["カレー"] 15 var Array4: Array = [""] 16 〜〜省略〜〜 17 var Array26: Array = [""] 18 var Array27: Array = [""] 19 var Array28: Array = [""] 20 21 22 // Sectionのタイトル 23 let sectionTitle = ["2/1","2/2","2/3","2/4","2/5","2/6","2/7","2/8","2/9","2/10", 24 "2/11","2/12","2/13","2/14","2/15","2/16","2/17","2/18","2/19","2/20", 25 "2/21","2/22","2/23","2/24","2/25","2/26","2/27","2/28"] 26 27 override func viewDidLoad() { 28 super.viewDidLoad() 29 // Do any additional setup after loading the view. 30 table.delegate = self 31 table.dataSource = self 32 33 // ピッカー設定 34 datePicker.datePickerMode = UIDatePicker.Mode.date 35 datePicker.timeZone = NSTimeZone.local 36 datePicker.locale = Locale.current 37 textField.inputView = datePicker 38 39 // 決定バーの生成 40 let toolbar = UIToolbar(frame: CGRect(x: 0, y: 0, width: view.frame.size.width, height: 35)) 41 let spacelItem = UIBarButtonItem(barButtonSystemItem: .flexibleSpace, target: self, action: nil) 42 let doneItem = UIBarButtonItem(barButtonSystemItem: .done, target: self, action: #selector(buttonon(_:))) 43 toolbar.setItems([spacelItem, doneItem], animated: true) 44 45 // インプットビュー設定 46 textField.inputView = datePicker 47 textField.inputAccessoryView = toolbar 48 49 } 50 51 // Section数 52 func numberOfSections(in tableView: UITableView) -> Int { 53 return sectionTitle.count 54 } 55 // Sectioのタイトル 56 func tableView(_ tableView: UITableView,titleForHeaderInSection section: Int) -> String? { 57 return sectionTitle[section] 58 } 59 60 // Table Viewのセルの数を指定 61 func tableView(_ table: UITableView,numberOfRowsInSection section: Int) -> Int { 62 if section == 0 { 63 return Array1.count 64 } 65 else if section == 1 { 66 return Array2.count 67 } 68 else if section == 2 { 69 return Array3.count 70 } 71 else if section == 3 { 72 return Array4.count 73 } 74 else if section == 4 { 75 return Array5.count 76 } 77 else if section == 5 { 78 return Array6.count 79 } 80 〜〜省略〜〜 81 else{ 82 return 0 83 } 84 } 85 86 //各セルの要素を設定する 87 func tableView(_ table: UITableView,cellForRowAt indexPath: IndexPath) -> UITableViewCell { 88 89 // tableCell の ID で UITableViewCell のインスタンスを生成 90 let cell = table.dequeueReusableCell(withIdentifier: "tableCell",for: indexPath) 91 92 // Tag番号 1 で UILabel インスタンスの生成 93 let label = cell.viewWithTag(1) as! UILabel 94 95 // Section毎に処理を分ける、ちょっと冗長的です 96 if indexPath.section == 0 { 97 //cell.textLabel?.text? = imgArray1[indexPath.row] as! String 98 99 label.text = String(describing: Array1[indexPath.row]) 100 } 101 else if indexPath.section == 1 { 102 label.text = String(describing: Array2[indexPath.row]) 103 } 104 else if indexPath.section == 2 { 105 label.text = String(describing: Array3[indexPath.row]) 106 } 107 else if indexPath.section == 3 { 108 label.text = String(describing: Array4[indexPath.row]) 109 } 110 else if indexPath.section == 4 { 111 label.text = String(describing: Array5[indexPath.row]) 112 } 113 114 〜〜以下省略〜〜 115 116 return cell 117 } 118 119 func tableView(_ table: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat { 120 return 40.0 121 } 122 123 @IBAction func buttonon(_ sender: Any) { 124 125 textField.endEditing(true) 126 127 // 日付のフォーマット 128 let formatter = DateFormatter() 129 formatter.dateFormat = "MM/dd HH:mm" 130 textField.text = "(formatter.string(from: Date()))" 131 132 table.reloadData() 133 } 134 135}
何か良い方法はございますでしょうか?
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/02/04 06:33