実現したいこと
テーブルビューのセクションに配置したボタンをタップすると、そのセクション番号が出力される。
悩み
ボタンをタップしたときに引数として渡すセクション番号が、なぜか全く別の数字に書き換わってしまう。
該当コード
swift
1 override func tableView(_ tableView: UITableView, viewForHeaderInSection section: Int) -> UIView? { 2 // HeaderのViewを作成してViewを返す 3 let headerView = UIView() 4 headerView.backgroundColor = UIColor(red: 224/255, green: 255/255, blue: 224/255, alpha: 1) 5 6 let label = UILabel() 7 label.frame = CGRect(x: 15, y: 0, width: view.bounds.width - 70, height: 50) 8 label.text = list[section] 9 label.textColor = UIColor.black 10 11 let button = UIButton(type: .custom) 12 button.frame = CGRect(x: view.bounds.width - 40, y: 10, width: 30, height: 30) 13 button.layer.cornerRadius = 0.5 * button.bounds.size.width 14 button.clipsToBounds = true 15 button.backgroundColor = UIColor.green 16 button.setTitle("▷", for: .normal) 17 button.setTitleColor(UIColor.black, for: .normal) 18 button.layer.borderWidth = 0.5 19 button.layer.borderColor = UIColor.black.cgColor 20 button.addTarget(self, action: #selector(self.buttonPressed(section:)), for: .touchUpInside) 21 22 print(section) 23 24 headerView.addSubview(button) 25 headerView.addSubview(label) 26 return headerView 27 } 28 29 // ボタンを押した時 30 @objc func buttonPressed(section: Int) { 31 print(section) 32 }
出力内容
上に貼ったコードのprint()
による出力がこちらです。
これは1つ目のボタンを押したときの動作になるので、本来は140530806762624
が0
になるはずです。(どのボタンを押しても、この桁数の数字が現れます。)
なぜこんな数字になっているのか、原因がわかりません。
0 1 2 3 4 5 140530806762624
このaddTarget
メソッドに何かおかしな点があるのでしょうか?
swift
1button.addTarget(self, action: #selector(self.buttonPressed(section:)), for: .touchUpInside) 2 print(section)
詳しい方がいましたら、教えていただきたいです。
よろしくお願いいたします。
回答1件
あなたの回答
tips
プレビュー