Swiftでセルをタップすると一つ前にタップしたセルが選択される
Swiftにも慣れないとだめだろうなってことでちびちびとやってるんだけど、今まで簡単にできてたことが案外どうすんのよ?なんてことが多々あるんだ。
そんな時にはまったのがテーブル作成。UITableViewね。Objective-Cでなら今までに何度でも作ってきたテーブル。
それがSwiftだとどういうわけか
最初にセルをタップしても反応しない→次にタップすると一つ前にタップしたセルがタップされたことになる
というObjective-Cでは経験したことのない奇怪な状況に。
なんせ慣れないSwift、どこがおかしいのか検討つかないんだ。
"タップされた”というのはprintlnでチェックしてるんだけど、これが正しく動いてないのか?
セルの作り方がおかしいのか?
view controllerの初期化の問題か?
などとあちこち調べること数日、、、
ようやく不具合の理由がわかったんだ。
セルがタップされた場合にコールされるdelegateメソッドはご存知didSelectRowAtIndexPathだけど、Swiftだと何か使い方が違うのかと調べていたら見つけたページがこれ。
JamesonQuave.com • View topic - Part 4 - didDeselectRowAtIndexPath
一つ前にタップしたセルがタップされてるという俺と全く同じ症状じゃないか!
ようやく気付いた原因は、、、
tableView:didDeselectRowAtIndexPath:
↑メソッド名を間違えていた〜 orz
tableView:didSelectRowAtIndexPath:
↑こっちだろ!
↑少し前にこんなツイートもしてるという、、、案外気が付かないもんだね。
そんな時にはまったのがテーブル作成。UITableViewね。Objective-Cでなら今までに何度でも作ってきたテーブル。
それがSwiftだとどういうわけか
最初にセルをタップしても反応しない→次にタップすると一つ前にタップしたセルがタップされたことになる
というObjective-Cでは経験したことのない奇怪な状況に。
なんせ慣れないSwift、どこがおかしいのか検討つかないんだ。
"タップされた”というのはprintlnでチェックしてるんだけど、これが正しく動いてないのか?
セルの作り方がおかしいのか?
view controllerの初期化の問題か?
などとあちこち調べること数日、、、
ようやく不具合の理由がわかったんだ。
セルがタップされた場合にコールされるdelegateメソッドはご存知didSelectRowAtIndexPathだけど、Swiftだと何か使い方が違うのかと調べていたら見つけたページがこれ。
JamesonQuave.com • View topic - Part 4 - didDeselectRowAtIndexPath
一つ前にタップしたセルがタップされてるという俺と全く同じ症状じゃないか!
ようやく気付いた原因は、、、
tableView:didDeselectRowAtIndexPath:
↑メソッド名を間違えていた〜 orz
tableView:didSelectRowAtIndexPath:
↑こっちだろ!
Swift難儀だなあ。table viewのセルをタップした時にコールされるはずの
didDeselectRowAtIndexPath
さえまともに動かせないわ。
— Tatsuya (@yt) 2014, 10月 23
↑少し前にこんなツイートもしてるという、、、案外気が付かないもんだね。
スポンサーサイト