[Swift]TableViewの使い方まとめ

スポンサーリンク

TableView周りの実装にあたり、参考にしたサイトの一覧

TableViewの背景色

 →デフォルトだと、色が着いていたので、それを透明にしたかった。
リンク切れ:http://blog.lizefield.mobi/?p=76 TableViewの背景を透明にする(Swift)

TableViewのセルのAlign

基本的にセル内の文字列をデフォルト(左寄せ)、任意のセル(今回は一番最後のセル)だけを中央寄せさせたい。

だた、Centerに設定するだけでは、うまくいかない場合があった。
その場合は、セルのstyleが、UITableViewCellStyleDefaultになっていない可能性がある。

  • UITableViewCellのtextLabelのAlignのメモ
    UITextViewCell.textLabelのセンタリングのためにtextAlignmentプロパティを弄るわけだが、有効になるのはセルのスタイルがUITableViewCellStyleDefaultの時だけ

・背景色変更&最後のセルの中央寄せの実装イメージ

    // Listの数分セルを追加し、最後に中央寄せのセルを追加する(最後のセルが追加ボタンの役割を担う)
    func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
        let cell: UITableViewCell = UITableViewCell(style: UITableViewCellStyle.Default, reuseIdentifier: "MyTestCell")
        if (indexPath.row < List.count) {
            cell.textLabel!.text = "\(List[indexPath.row])"
            let tblBackColor: UIColor = UIColor.clearColor()
            cell.backgroundColor = tblBackColor
        } else {
            cell.textLabel!.text = "最後のセル"
            cell.textLabel!.textAlignment = NSTextAlignment.Center
        }
        // separatorのlineのマージンを0にする(デフォルト15)
        cell.separatorInset = UIEdgeInsetsZero
        cell.layoutMargins = UIEdgeInsetsZero
        return cell
    }

セルの削除(スワイプ)

スワイプにより削除できるようにする。

・スワイプ&削除の実装イメージ

    // セルの削除許可の設定
    func tableView(tableView: UITableView,canEditRowAtIndexPath indexPath: NSIndexPath) -> Bool
    {
        return true
    }
    func tableView(tableView: UITableView, commitEditingStyle editingStyle: UITableViewCellEditingStyle, forRowAtIndexPath indexPath: NSIndexPath) {
        if editingStyle == UITableViewCellEditingStyle.Delete {
            // 削除
            cellList.removeAtIndex(indexPath.row)
            tableView.deleteRowsAtIndexPaths([indexPath], withRowAnimation: UITableViewRowAnimation.Automatic)
            // データの保存
            let defaults = NSUserDefaults.standardUserDefaults()
            defaults.setObject(self.cellList, forKey: "List")
            defaults.synchronize()
        }
    }

参考

  • スワイプでUITableViewCellの削除
スワイプでUITableViewCellの削除 - Qiita
セルの削除許可を設定func tableView(tableView: UITableView,canEditRowAtIndexPath indexPath: NSIndexPath) -> B…

タップしたときの処理

任意のセルをタップしたときにセルの追加処理を行うようする。

・タップしたときの処理の実装例

    // タップした時の処理
    func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {
         tableView.deselectRowAtIndexPath(indexPath, animated: true)
        if (indexPath.row == List.count ) {
            // 最後のセルをタップしたときのみに処理される
        }
    }

セルの高さの変更

今回は使わない方針だが、セルの高さも変えようと検討していた。

参考

  • [iOS] Auto Layout を使いこなす。UITableViewCell と UIScrollView 編

http://hamasyou.com/blog/2014/10/09/ios-autolayout-scrollview-tablecell/

コメント

タイトルとURLをコピーしました