[Swift] UITableViewのセルにアクションを設定する
公開日:
:
iPhone App 開発, Swift
Warning: Use of undefined constant user_level - assumed 'user_level' (this will throw an Error in a future version of PHP) in /home/users/1/juny/web/hidef/wp-content/plugins/ultimate-google-analytics/ultimate_ga.php on line 524
セル選択→アクション
UITableViewControllerを使用したテーブルビューの画面があるとします。
そしてUITableViewのセルを選択したときにアクションを実行させるのですが、スマートな方法を見つけたので紹介します。
言語はSwiftになります。
処理の流れは。。。
- セル列に個別のアクション(メソッド)を用意する
- アクションマップ(配列)を設定する
- セル選択時にアクションマップからアクションを実行させる
ソースファイルはTableViewActionController.swiftで作成しました。
以下、ソースコードです。
import UIKit
class TableViewActionController : UITableViewController {
var actionMap: [[Void -> Void]] {
return [
// Section1
[
self.cell1_1,
self.cell1_2,
self.cell1_3
],
// Section2
[
self.cell2_1,
self.cell2_2
]
]
}
func cell1_1() {
println("cell1_1");
}
func cell1_2() {
println("cell1_2");
}
func cell1_3() {
println("cell1_3");
}
func cell2_1() {
println("cell2_1");
}
func cell2_2() {
println("cell2_2");
}
// MARK: UITableViewDelegate
override func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {
let action = actionMap[indexPath.section][indexPath.row]
action()
tableView.deselectRowAtIndexPath(indexPath, animated: true)
}
}
- 5行目:actionMap変数で定義したメソッドを設定しています。
- 21〜39行目:各セル選択時に実行されるメソッドです。
- 43行目:UITableViewのDelegateメソッドであるdidSelectRowAtIndexPath(セル選択時に呼ばれる)にactionMap変数の配列に指定されたアクションを実行します。
- 48行目:deselectRowAtIndexPathで選択状態のセルを解除します。
まとめ
普通ならdidSelectRowAtIndexPathでif文を使い[セクション・列]を判断しメソッドを実行させるのですが、アクションをまとめるやり方は、とてもスマートに記述できたのが分かります。配列にメソッドを設定しているのがキモですね。
Objective-cではこんな設定できるのかわかりませんが、Swift素晴らしい!と思いました。
ad
関連記事
-
-
[Swift] UINavigationControllerで戻るイベントを取得する
UINavigationController UINavigationControllerを使用し
-
-
[Swift] プロパティリスト(plist)を使ってCoreDataで一括登録する
プロパティリストを使う 初期データやあらかじめ用意したデータを一括登録したい場合、プロパティリスト
-
-
iPhoneApp WorkManager公開されました!
きっとリジェクトされるんだろうなと思いながら申請を出して1週間。 本日、公開のメールが届きまし
-
-
[Swift] frameworkについて
先日、Swiftで実装されたライブラリをまとめたサイトを発見しました。 Swift Toolb
-
-
[Swift] optional値の設定(??)
optional値がnilの時 プロジェクトでのテンプレートを選択した時にソースコードが自動生成さ
-
-
小さなことからコツコツと
これまでHTMLとCSSだけで生きてきただけあって、プログラム言語がいまいちわからない。 Mo
-
-
[Objective-C] UINavigationControllerのセグエを使って画面遷移をする
画面遷移の実装 今回はUINavigationControllerを使って画面遷移をしたいと思いま
-
-
[Swift] プロパティリスト(plist)の値を取得
plistからデータを取得してみます。 こちらのエントリーも参考にしてみてください。 プロパテ
-
-
[Objective-C] 小数点を丸める!(数値変換)
小数点を含む数値 Objective-Cに限らず、小数点を含む数値を計算する場合はdoubleやf
