今日の写経19
今日の写経
045. TableViewのボタンの拡張 - Swift Docs
所感
1ヶ月ぶり、書くのが減ってきたのでアプリを作り始めようと思う。
今回でSwiftが2.0に上がっているのでvarの変数宣言とprintlnで怒られた。
画面キャプチャ
ソースコード
// ViewController.swift
import UIKit class ViewController: UIViewController, UITableViewDelegate, UITableViewDataSource { // tableで使用する配列 var myItems: [String] = ["TEST1", "TEST2", "TEST3"] var myTableView: UITableView = UITableView() override func viewDidLoad() { super.viewDidLoad() // Status Barの高さを取得 let barHeight: CGFloat = UIApplication.sharedApplication().statusBarFrame.size.height // Viewの高さを幅を取得 let displayWidth: CGFloat = self.view.frame.width let displayHeight: CGFloat = self.view.frame.height // TableViewの生成(status barの高さ分ズラして表示) myTableView.frame = CGRect(x: 0, y: barHeight, width: displayWidth, height: displayHeight - barHeight) // Cellの登録 myTableView.registerClass(UITableViewCell.self, forCellReuseIdentifier: "MyCell") // DataSourceの設定 myTableView.dataSource = self // Delegateを設定 myTableView.delegate = self // Viewに追加する self.view.addSubview(myTableView) } override func didReceiveMemoryWarning() { super.didReceiveMemoryWarning() } /* Cellが選択された際に呼び出される */ func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) { print("Num: \(indexPath.row)") print("Value: \(myItems[indexPath.row])") } /* Cellの総数を返す */ func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int { print("numberOfRowsInSection") return myItems.count } /* Editableの状態にする */ func tableView(tableView: UITableView, canEditRowAtIndexPath indexPath: NSIndexPath) -> Bool { print("canEditRowAtIndexpath") return true } /* 特定の行のボタン操作を有効にする */ func tableView(tableView: UITableView, commitEditingStyle editingStyle: UITableViewCellEditingStyle, forRowAtIndexPath indexPath: NSIndexPath) { print("commitEdittingStyle:\(editingStyle)") } /* Cellに値を設定する */ func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell { print("cellForRowAtIndexPath") let cell: UITableViewCell = tableView.dequeueReusableCellWithIdentifier("MyCell", forIndexPath: indexPath) as UITableViewCell cell.textLabel?.text = "\(myItems[indexPath.row])" return cell } /* Butonを拡張する */ func tableView(tableView: UITableView, editActionsForRowAtIndexPath indexPath: NSIndexPath) -> [UITableViewRowAction]? { // Shareボタン let myShareButton: UITableViewRowAction = UITableViewRowAction(style: .Normal, title: "Share") { (action, index) -> Void in tableView.editing = false print("share") } myShareButton.backgroundColor = UIColor.blueColor() // Archiveボタン let myArchiveButton: UITableViewRowAction = UITableViewRowAction(style: .Normal, title: "Archive") { (action, index) -> Void in tableView.editing = false print("archive") } myArchiveButton.backgroundColor = UIColor.redColor() return [myShareButton, myArchiveButton] } }