頭と尻尾はくれてやる!

パソコンおやじのiPhoneアプリ・サイト作成・運営日記


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:
↑こっちだろ!


↑少し前にこんなツイートもしてるという、、、案外気が付かないもんだね。

<< マッサンの影響で余市10年ってウイスキーを飲んでみた  TopPage  ROVIOのRETRYの課金方法に感心した >>

コメント


管理者にだけ表示を許可する
 

トラックバック

トラックバックURL
http://ringsbell.blog117.fc2.com/tb.php/937-578f0c05




Copyright ©頭と尻尾はくれてやる!. Powered by FC2 Blog. Template by eriraha.

FC2Ad