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

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

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

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

Swift

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

Q&A

1回答

714閲覧

カスタムセルの画像をtableViewからタップした際に、表示画像を切り替えたい

keisuke110

総合スコア10

Xcode

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

Swift

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

0グッド

0クリップ

投稿2018/10/27 05:56

前提・実現したいこと

ここに質問の内容を詳しく書いてください。
(例)xcode 6.1で初めてアプリを作成しています。

カスタムセル一行の左端にチェックボックス(画像)があり、その右にラベルがあるTableViewを作成しようとしています。

発生している問題・エラーメッセージ

左端のチェックボックス(画像)をクリックした場合、チェックON/OFF画像の表示切り替えをしたいのですが、うまくできません。Print分のデバッグで反応する事は確認できてはいます。ご教示よろしくお願いいたします。

カスタムセルのソースコード

class CustomCellTableViewCell: UITableViewCell {

@IBOutlet weak var checkImage: UIImageView! @IBOutlet weak var label: UILabel! @IBOutlet weak var button: UIButton! var check = false let checkOn:UIImage = UIImage(named:"checkOn.jpg")! let checkOff:UIImage = UIImage(named:"checkOff.jpg")! @IBAction func checkButton(sender: AnyObject) { if(!check){ sender.setImage(checkOn, forState: UIControlState.Normal) //sender.setTitle("on", forState: UIControlState.Normal) println("checkOn") println("label: (self.label.text)") println("checkImage: (self.checkImage)") println("self: (self)") check = !check } else{ sender.setImage(checkOff, forState: UIControlState.Normal) println("checkOff") check = !check } } func setCellData(indexPath: NSIndexPath){ let cell = self as UITableViewCell self.label.text = String((indexPath.row)+1)

// self.checkImage.image = UIImage(named: "checkOn.jpg")
// self.button.setImage(checkOn, forState: UIControlState.Normal)
}
}

ViewControllerのソースコード

class ViewController: UIViewController,UITableViewDelegate, UITableViewDataSource {

@IBOutlet weak var tableView: UITableView! override func viewDidLoad() { tableView.registerNib(UINib(nibName: "CustomCellTableViewCell", bundle: nil),forCellReuseIdentifier:"reuseCell") } func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int { return 10 } func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell { let cellValue = tableView.dequeueReusableCellWithIdentifier("reuseCell", forIndexPath: indexPath) as CustomCellTableViewCell cellValue.setCellData(indexPath)

// println("cellValue: (cellValue.textField)")

//gestureを設定 let tapGesture = UITapGestureRecognizer(target: self, action: Selector("tapIcon:")) cellValue.checkImage.addGestureRecognizer(tapGesture) cellValue.checkImage.userInteractionEnabled = true return cellValue } func tapIcon(gestureRecognizer: UITapGestureRecognizer) { let tappedLocation = gestureRecognizer.locationInView(tableView) let tappedIndexPath = tableView.indexPathForRowAtPoint(tappedLocation) let tappedCell = tableView.cellForRowAtIndexPath(tappedIndexPath!)! println("tappedCell: (tappedCell)")

// println("tappedCelllabel: (tappedCell.label.text)")
// println("tappedCell: (tappedCell.checkImage)")

// tappedCell.image.setImage("checkOn.jpg", forState: UIControlState.Normal)
// println("tappedCell.label: (tappedCell.label.text)")

} override func didReceiveMemoryWarning() { super.didReceiveMemoryWarning() // Dispose of any resources that can be recreated. }

}

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

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

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

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

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

takabosoft

2018/10/29 06:05

例ではなく、実際に使っているXcodeのバージョンはいくつなのでしょうか?コード全体が少し古いように見えますが。 また、コードは```swift ```で囲ってください。
guest

回答1

0

わざわざUIViewController側でtapIconを用意しているのはなぜでしょうか?
アイコンを変えたいだけであればCustomCellTableViewCellcheckButtonで変わると思いますが。
(透明のボタンを用意してImageViewに重ねる、またはImageViewではなくButtonの背景に画像を設定する。)

コードが古いのでそのままだと使えなかったので現状のコードが動くかどうか(tapIconが呼ばれていてその中でcellが取得できているのであれば画像を変える関数を呼び出すだけかなと思います。今のコードには画像を変更するコードはそもそも書かれていないと思います。)

投稿2018/11/07 09:37

razuma

総合スコア1313

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

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

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

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問