現在、アンケートアプリを作成しています。
UITableViewのcellに、UILabelの質問番号、質問文(配列)と、SegmentedControlの「はい・いいえ」の選択肢を設置しています。
TableView最下段の回答終了ボタンを押した際に、はいの数といいえの数を取得したいです。
現在、はい・いいえの値が変わったタイミング(.valueChanged)で、SegmentIndexを取得し、回数を加算しているのですが、はい・いいえを切り替えるごとに加算されてしまい、正確な合計を計算できません。
どのようなコードで上記を実装できるか、また、もしよりよい方法があれば、ご教示願えればと思います。
よろしくお願いいたします。
Swift5
1 func numberOfSections(in tableView: UITableView) -> Int { 2 return 1 3 } 4 5 func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int { 6 return QuestionnaireArray.count 7 } 8 9 func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { 10 11 //セルの再利用 12 let cell = tableView.dequeueReusableCell(withIdentifier: "Cell", for: indexPath as IndexPath) 13 14 // フォント設定 15 cell.textLabel!.font = UIFont(name: "Arial", size: 35) 16 17// Labelの内容 18 let numberLabel = cell.viewWithTag(1) as! UILabel 19 numberLabel.text = String("(number + indexPath.row + 1)") 20 21 let questionnaireLabel = cell.viewWithTag(2) as! UILabel 22 questionnaireLabel.text = String("(questionnaireArray[indexPath.row])") 23 24// はい/いいえのsegmentedControl 25 let answerButton = cell.viewWithTag(3) as! UISegmentedControl 26 27 let font = UIFont.systemFont(ofSize: 25) 28 answerButton.setTitleTextAttributes([NSAttributedString.Key.font: font], for: .normal) 29 answerButton.selectedSegmentIndex = -1 30 31 answerButton.addTarget(self, action: #selector(segmentValueChanged(_:)), for: .valueChanged) 32 33 return cell 34 } 35 36// はい、いいえのカウント 37 @objc func segmentValueChanged(_ sender: UISegmentedControl) { 38 39 switch sender.selectedSegmentIndex { 40 case 0: 41 yesAnswerCount = yesAnswerCount + 1 42 43 case 1: 44 noAnsewerCount = noAnsewerCount + 1 45 46 default: 47 break 48 } 49 } 50 51// 回答終了ボタン 52// 選択されたはい、いいえの数を数える。 53// 回答がはいの行番号を取得する 54// 未回答がないかをチェック → あったら警告メッセージ表示(+サウンド) 55// 未回答がなかったら → 結果をResultVCに送る 56 @IBAction func finishButton(_ sender: Any) { 57 } 58
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/04/26 05:18
2020/04/26 14:26