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/
コメント