前提・実現したいこと
タブ管理画面を作成中
UITableViewをセクションで分けて表示したい。
発生している問題
- sectionの内容が繰り返されている?
- 下にスクロールして戻ると編集モードがsection0にも適用されてしまっている
どこが原因かわからず悩んでおります、お力を貸していただきたいです????♂️
該当のソースコード
Swift
1import Foundation 2import UIKit 3 4class TabTitleController: BaseViewController, UITableViewDelegate, UITableViewDataSource { 5 6 // AppDelegate 7 fileprivate var delegate: AppDelegate = UIApplication.shared.delegate as! AppDelegate 8 9 fileprivate var items = Memo().loadTab() 10 fileprivate let colors = Theme().load() 11 12 fileprivate let addTextField = UITextField() 13 fileprivate let textField = UITextField() 14 fileprivate let addButton = UIButton() 15 // displayの幅と高さ 16 fileprivate let dw: CGFloat = UIScreen.main.bounds.size.width 17 fileprivate let dh: CGFloat = UIScreen.main.bounds.size.height 18 19 fileprivate var tableView: UITableView? 20 21 override func viewDidLoad() { 22 super.viewDidLoad() 23 // ナビゲーションバーの設定 24 doNavigationBarSetting() 25 addButton.addTarget(self, action: #selector(self.addButtonTapped(_:)), for: .touchUpInside) 26 27 28 // TableViewの生成する 29 tableView = UITableView(frame: CGRect(x: 0, y: 0, width: dw, height: dh), style: .grouped) 30 31 32 // Cell名の登録をおこなう. 33 tableView!.register(UITableViewCell.self, forCellReuseIdentifier: "tabTitleCell") 34 tableView!.delegate = self 35 tableView!.dataSource = self 36 tableView!.tableFooterView = UIView(frame: .zero) 37 view.addSubview(tableView!) 38 39 } 40 41 func numberOfSections(in tableView: UITableView) -> Int { 42 return 2 43 } 44 45 46 func tableView(_ tableView: UITableView, titleForHeaderInSection section: Int) -> String? { 47 if section == 0{ 48 return "タブ追加" 49 }else{ 50 return "タブ名変更・削除・並び替え" 51 } 52 } 53 54 /* 55 * Cellの総数を返すデータソースメソッド(実装必須) 56 */ 57 func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int { 58 if section == 0 { 59 return 2 60 }else{ 61 return items.count 62 } 63 } 64 65 /* 66 * Cellのデザインなどを定義 67 */ 68 func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { 69 let cell = tableView.dequeueReusableCell(withIdentifier: "tabTitleCell", for: indexPath) 70 let row = indexPath.row 71 cell.selectionStyle = .none 72 if indexPath.section == 0 { 73 if indexPath.row == 0 { 74 addTextField.frame = CGRect(x: 15, y: 0, width: self.dw * 0.6, height: 45) 75 addTextField.placeholder = "タブ名を入力してください" 76 cell.contentView.addSubview(addTextField) 77 }else{ 78 addButton.frame = CGRect(x: self.dw / 2 - self.dw * 0.3, y: 90 / 2 - 20, width: self.dw * 0.6, height: 40) 79 addButton.backgroundColor = .black 80 addButton.setTitle("追加", for: .normal) 81 addButton.setTitleColor(.white, for: .normal) 82 addButton.layer.borderColor = UIColor.gray.cgColor 83 addButton.layer.borderWidth = 0.5 84 addButton.layer.cornerRadius = 5 85 cell.backgroundColor = .clear 86 cell.contentView.addSubview(addButton) 87 } 88 89 }else{ 90 tableView.setEditing(true, animated: true) 91 // タブタイトル編集用のTextField 92 textField.frame = CGRect(x: 15, y: 0, width: dw * 0.6, height: 45) 93 textField.text = items[row] 94 cell.contentView.addSubview(textField) 95 96 } 97 return cell 98 99 } 100 101 func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat { 102 if indexPath.section == 0 && indexPath.row == 1 { 103 return 90 104 } else { 105 return 45 106 } 107 }
補足情報(FW/ツールのバージョンなど)
Xcode 13.0
Swift 5
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。