Help us understand the problem. What is going on with this article?

UITableViewのUX改善(今すぐ出来る!)

More than 3 years have passed since last update.

はじめに

deselectRowAtIndexPath(indexPath: NSIndexPath, animated: Bool)

UITableView上にあるセルの選択状態を解除するときに使うメソッドですが、
呼び場所を替えるだけでUXを大幅に改善することが出来ます。

経緯

アプリによってはセル押下後に画面遷移するにもかかわらず、
押下直後にdeselectRowAtIndexPathを呼ぶような挙動になっていたりします。

これは悪いことではないですが、画面遷移から戻ってきた時に
セルの選択状態を解除してあげたほうがどのセルを押したのか
ユーザーに視覚的に伝えることが出来るのでUX的に良いと思ったからです。

セル押下直後に解除

deselect_in_deselected.gif

この方法だとどのセルを押したのかをユーザーは思い出さなければいけません。

遷移から戻ってきた時に解除

deselect_in_willAppear.gif

こちらはどのセルを押したのか視覚からはっきりと分かります。

ネイティブの設定アプリ

setting_deselect.gif

ちなみにネイティブの設定アプリも遷移後にセルの選択状態を解除しています。

実装方法

BadDeselect.swift
func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {
    tableView.deselectRowAtIndexPath(indexPath, animated: true)

    // 画面遷移など
}

didSelectRowAtIndexPath内などでやっていた処理を、

GoodDeselect.swift
override func viewWillAppear(animated: Bool) {
    super.viewWillAppear(animated)

    if let indexPathForSelectedRow = tableView.indexPathForSelectedRow {
        tableView.deselectRowAtIndexPath(indexPathForSelectedRow, animated: true)
    }
}

viewWillAppearでやることで実現しています。

ちなみに選択状態のセルはUITableView#indexPathForSelectedRowで取得できます。

終わりに

細かい見た目ですが、「神は細部に宿る」と言います。
今すぐ出来る改善なので、是非やってみてください。
ご指摘、ご質問がありましたらコメント欄へどうぞ。

サンプルコードをGithubに置いておきました。
ご自由にお使いください。
https://github.com/AcaiBowl/CellUX-Sample

trsxxii
iOS/Android Developer. Swift, Objective-C, Java... Follow me!!!
recruitlifestyle
飲食・美容・旅行領域の情報サイトや『Airレジ』などの業務支援サービスなど、日常消費領域に関わるサービスの提供するリクルートグループの中核企業
http://www.recruit-lifestyle.co.jp/
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした