[swift]TableViewの使い方まとめ

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

■TableViewの背景色
 →デフォルトだと、色が着いていたので、それを透明にしたかった。
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
    }

■セルの削除(スワイプ)
 →スワイプにより削除できるようにしたかった。
スワイプでUITableViewCellの削除

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

    // セルの削除許可の設定
    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()
        }
    }

■タップしたときの処理
→任意のセルをタップしたときにセルの追加処理を行うようにしたかった。
UITableView周りいろいろ その②cellをタップしたときの処理

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

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

■セルの高さの変更
 →今回は使わない方針だが、セルの高さも変えようと検討していた。
[iOS] Auto Layout を使いこなす。UITableViewCell と UIScrollView 編

a

スポンサーリンク







シェアする

  • このエントリーをはてなブックマークに追加

フォローする

スポンサーリンク