前提・実現したいこと
Swift4において、TableViewCellにおいてLabelとUISwitchをcell内に設置し、UISwitchのONの時にcell内のlabelの中のテキストをコンソールに出力したいのですが、うまく行かずに苦戦していますのでご助力いただけると幸いです。
発生している問題・エラーメッセージ
下記のコードで上記のようなことが実装できると思ったのですが、実装できずにいます。ググっても見て変えてみたりはしたのですが、思った通りの結果にならずわからずにいますので助けていただければと思います。
該当のソースコード
TableViewController
1import UIKit 2 3class TableViewController: UITableViewController, Delegate { 4 5 var names:Array = ["みかん","オレンジ","りんご","なし","バナナ"] 6 7 override func viewDidLoad() { 8 super.viewDidLoad() 9 // Do any additional setup after loading the view, typically from a nib. 10 } 11 12 override func numberOfSections(in tableView: UITableView) -> Int { 13 return 1 14 } 15 16 override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int { 17 return self.names.count 18 } 19 20 override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { 21 let cell:TableViewCell = tableView.dequeueReusableCell(withIdentifier: "Cell", for: indexPath) as! TableViewCell 22 Setting(name: self.names[indexPath.row], delegate: self) 23 24 return cell 25 } 26 27 func didSwitchOn(name: String) { 28 func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) { 29 30 let cell = tableView.cellForRow(at: indexPath) 31 let indicator = cell?.contentView.viewWithTag(1) as! UIActivityIndicatorView 32 indicator.startAnimating() 33 34 } 35 36 } 37 38 func didSwitchOff(name: String) { 39 print("off") 40 } 41 42}
TableViewCell
1import UIKit 2 3protocol Delegate: class { 4 // スイッチがONにされたときに実行されるメソッド 5 func didSwitchOn(name:String) 6 // スイッチがOFFにされたときに実行されるメソッド 7 func didSwitchOff(name:String) 8} 9 10class TableViewCell: UITableViewCell { 11 12 var delegate:Delegate? 13 var name:String = "" 14 var isOptional:Bool = false 15 16 @IBOutlet weak var label: UILabel! 17 @IBOutlet weak var uiSwitch: UISwitch! 18 19 func setting(name:String, disabled:Bool = false, isOptional:Bool = false, delegate:Delegate) { 20 self.name = name 21 self.isOptional = isOptional 22 self.delegate = delegate 23 24 if disabled { 25 self.uiSwitch.isEnabled = false 26 self.backgroundColor = UIColor.lightGray 27 } else { 28 self.uiSwitch.isEnabled = true 29 self.backgroundColor = UIColor.white 30 } 31 } 32 33 @IBAction func didChangeduiSwitch(_ sender: UISwitch) { 34 if sender.isOn { 35 delegate?.didSwitchOn(name: self.name) 36 } else { 37 delegate?.didSwitchOff(name: self.name) 38 } 39 } 40 41} 42
試したこと
didSwicthOnの時に、print("cell,textLabel")で出力されるかと思ったのですが、それでもされず、didSelectRowAtでコンソールにcellを押された場合に出力されるのは確認していたのでできるかと思ったのですが、出力されなかったためにどうしたものかと思っており、個人的には八方塞りなようになってしまているので、ご助力いただきたいです。
補足情報(FW/ツールのバージョンなど)
Swift 4.2.1
Xcode 10.1 (10B61)