LoginSignup
43
36

More than 5 years have passed since last update.

SwiftでTableViewいろいろ -> No.2

Posted at

はじめに

SwiftでUITableViewについて第2弾です。
今回は次の3点について書きます。
・タップ時のイベント処理の実装
・accessoryTypeを指定してセルの右側にチェックマークとかつける
・accessoryViewにUISwitchとかを入れる

ちなみにNo.1ではとりあえず表示することを目標に
・セクション分けして表示
・ヘッダー,フッターを表示
について書きました。(コードそのまま載せた感じになってしまったが、、)
SwiftでTableViewいろいろ -> No.1

セルタップ時のイベント処理の実装

UITableViewDelegateのfunc tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath)
を使います。

//MARK:UITableViewDelegate

    /**
     Cell選択された時に実行するメソッド
     */
    func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {
        // セルの選択状態を解除
        tableView.deselectRowAtIndexPath(indexPath, animated: true)

        print("section:\(indexPath.section) row:\(indexPath.row)")
    }

このSampleではログ出力しただけですが
セルタップで画面遷移したりアラート表示したりと使う場面は多いと思います。

accessoryTypeを指定してセルの右側にチェックマークとかつける

accessoryTypeの種類
1.UITableViewCellAccessoryType.None
2.UITableViewCellAccessoryType.Checkmark
3.UITableViewCellAccessoryType.DetailButton
4.UITableViewCellAccessoryType.DisclosureIndicator
5.UITableViewCellAccessoryType.DetailDisclosureButton

それぞれこんな感じ↓
スクリーンショット 2016-04-28 2.36.28.png

func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCellの中で
UITableViewCellのインスタンスを生成(cell)して
cell.accessoryType = UITableViewCellAccessoryType.Checkmark
のようにaccessoryTypeを指定します。

accessoryViewにUISwitchとかを入れる

次は、accessoryType指定ではなくaccessoryViewに任意のUIを設定します。
accessoryTypeのケースと同じような感じですが、
func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCellの中で
UITableViewCellのインスタンスを生成(cell)して

if cell.accessoryView == nil {
    cell.accessoryView = UISwitch()
}

スクリーンショット 2016-04-29 0.38.36.png

みたいな感じで設定できます。

if文でnilの場合のみにしているのは、TableViewをスクロールして
対象セルが一度見えなくなってから再度表示される際には
cell.accessoryView = UISwitch()は呼ばないでほしいので。

もちろんUISwitch以外も設定できます!!

最後に

今回は、
・タップ時のイベント処理の実装
・accessoryTypeを指定してセルの右側にチェックマークとかつける
・accessoryViewにUISwitchとかを入れる
を記載しました。
次回は、
・スワイプで削除モードにする
・削除ボタンのテキストを編集する
について記載しようと思っています。

43
36
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
43
36