質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
iOS

iOSとは、Apple製のスマートフォンであるiPhoneやタブレット端末のiPadに搭載しているオペレーションシステム(OS)です。その他にもiPod touch・Apple TVにも搭載されています。

Xcode

Xcodeはソフトウェア開発のための、Appleの統合開発環境です。Mac OSXに付随するかたちで配布されています。

Swift

Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

Q&A

1回答

482閲覧

TableViewCell名をUISwitchのOn,Offでコンソールに出力したい

murakmixi

総合スコア26

iOS

iOSとは、Apple製のスマートフォンであるiPhoneやタブレット端末のiPadに搭載しているオペレーションシステム(OS)です。その他にもiPod touch・Apple TVにも搭載されています。

Xcode

Xcodeはソフトウェア開発のための、Appleの統合開発環境です。Mac OSXに付随するかたちで配布されています。

Swift

Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

0グッド

0クリップ

投稿2019/02/25 21:45

編集2019/02/26 01:14

前提・実現したいこと

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)

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

takabosoft

2019/02/26 00:48

「didSwicthOnの時に、print("cell,textLabel")で出力されるかと思ったのですが」とありますが、そのようなprint文は見当たりませんが・・・
fuzzball

2019/02/26 00:51

print("off") の方は表示されるのでしょうか?
murakmixi

2019/02/26 00:53

すみません、print文の書き忘れです。
murakmixi

2019/02/26 00:53

offの方も同様に表示されていません!
takabosoft

2019/02/26 01:06

setting関数を呼び出しているコードも見当たりませんが、本家のソースにはちゃんと入っているんでしょうか?
murakmixi

2019/02/26 01:11

Setting(name: self.names[indexPath.row], delegate: self)と入っていました! 抜けていたので訂正します。
takabosoft

2019/02/26 01:18

いやいや、それはコンパイル通らないですよ
takabosoft

2019/02/26 01:19

cell.setting....のはずです。正確に質問してくださいね。
guest

回答1

0

まずは、

@IBAction func didChangeduiSwitch(_ sender: UISwitch) {

ここにブレークポイントを貼って、実行してスイッチを押してブレークするか確認してください。

ブレークしたらステップイン・オーバーなど一行ずつ動作させてみればよいです。

投稿2019/02/26 00:47

takabosoft

総合スコア8356

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問