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

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

解決済

2回答

2305閲覧

Swift3 TableViewCell内に配置したボタンの画像を変更する

mokumoku

総合スコア46

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クリップ

投稿2017/02/21 06:10

編集2017/02/21 06:15

下記リンク先プロジェクトを参考にアプリを作成しております。
TableViewCell内にボタンを配置して、そのボタンをタップした際に、
タップしたボタンが存在するセルのみ、ボタンの画像を変更するといった処理を行いたいです。

SegmentChangeTable

ボタンのOutletsをViewControllerにつなげるとエラーがでたため、
新規にTableViewCellのサブクラスとなるファイルを作成して、そのファイルにボタンのOutletsを接続しました。

ViewControllerにボタンのActionを追加してその処理として下記を記載し、実行したところ"//押されたボタンを取得"箇所で**"fatal error: unexpectedly found nil while unwrapping an Optional value"**がデバッグエリアに表示されました。

原因がつかめず、別の実装方法も思いつかなかったため、こちらで質問させていただきました。

何か解決方法等ございましたら、ご回答のほど、よろしくお願いします。

@IBAction func ButtonAction(_ sender: Any) { // 押されたボタンを取得 let buttonAct = FirstView.tableView.dequeueReusableCell(withIdentifier:”サブクラスファイル”) as! サブクラスファイル buttonAct.button.setImage(UIImage(named: "Image-1"), for: .normal) }

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

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

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

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

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

guest

回答2

0

ベストアンサー

サンプルを今回の質問用に若干修正しました、ダウンロードして試してみてください。
※ セルのボタンを押すと画像が変わります。

teratail_66655

投稿2017/02/22 04:25

_Kentarou

総合スコア8490

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

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

mokumoku

2017/02/28 01:12

大変お手数おかけしました。解決することができました。 回答ありがとうございました。
guest

0

"fatal error: unexpectedly found nil while unwrapping an Optional value"
が出たってことは該当箇所のどっかしらでなんかしらがnilになっていると思われます。
該当箇所のコードを見ると as! を使っていますので、おそらくですが、
型の変換に失敗しておちているのではないでしょうか?

breakpoint を使うなどして FirstView.tableView.dequeueReusableCell(withIdentifier:”サブクラスファイル”) の値が何であるかを調べてみてはどうでしょうか?
breakpoint がめんどくさい場合は、

print(FirstView.tableView.dequeueReusableCell(withIdentifier:”サブクラスファイル”))
exit

とかで何が出力されるかみてみてはどうでしょうか?

投稿2017/02/21 08:52

domonr

総合スコア263

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

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

mokumoku

2017/02/21 11:08

回答ありがとうございます。 print(FirstView.tableView.dequeueReusableCell(withIdentifier:”サブクラスファイル”)) を記載したところ、nilが返ってきました。
domonr

2017/02/21 11:28

nil を強制的に as! でサブクラスに変換したらそりゃ落ちますよね。
mokumoku

2017/02/21 15:00

withIdentifier部分をTableViewCellに設定しているidentifierに書き換えて実行したところ、TableViewCellの構造のようなログが出力されました。 ボタンを指定?する方法が全く不明です。お手数ですがご教示お願いできますでしょうか。
domonr

2017/02/22 01:09

これ以上はコード見てみないとなんともいえないのですが、怪しそうな点は ・FirstView.tableView  →FirstViewがクラスだったらこの指定の仕方だとstaticな変数にアクセスすることになりますがあってる?FirstViewのインスタンスを生成するんじゃないの?
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問