【swift】画面遷移でパラメータを引き継ぐ方法
やりたかったこと
webというか(php)でいえば、$_GET、$_POSTでパラメータで画面間でパラメータを引き回す方法をメモ。
実装
たいていの画面で画面遷移はあるので、BaseViewControllerみたいのをつくって共通の関数を用意しておくと楽だとおもいました
AppDelegate.swift
// パラメータ var params: Dictionary<String, AnyObject> = Dictionary<String,AnyObject>() var dictParams: Dictionary<String, Dictionary<String,AnyObject>> = Dictionary<String, Dictionary<String,AnyObject>>() var arrDictParams: Dictionary<String, [Dictionary<String,AnyObject>]> = Dictionary<String,[Dictionary<String,AnyObject>]>()
BaseViewController.swift
/**
* 画面間パラメータ設定
*/
// パラメータが文字列
func _setParam(key: String, string: String) {
var appDelegate:AppDelegate = UIApplication.sharedApplication().delegate as! AppDelegate
appDelegate.params[key] = string
}
// パラメータが文字列の配列
func _setParam(key: String, stringArray: [String]) {
var appDelegate:AppDelegate = UIApplication.sharedApplication().delegate as! AppDelegate
appDelegate.params[key] = stringArray
}
// パラメータが連想配列
func _setParam(key: String, dictionaries: [Dictionary<String,AnyObject>]) {
var appDelegate:AppDelegate = UIApplication.sharedApplication().delegate as! AppDelegate
appDelegate.arrDictParams[key] = dictionaries
}
// パラメータが連想配列の配列
func _setParam(key: String, dictionary: Dictionary<String,AnyObject>) {
var appDelegate:AppDelegate = UIApplication.sharedApplication().delegate as! AppDelegate
appDelegate.dictParams[key] = dictionary
}
/**
* 画面間パラメータ取得
*/
// パラメータが文字列
func _getParam(key: String) -> String {
var appDelegate:AppDelegate = UIApplication.sharedApplication().delegate as! AppDelegate
var result: String? = appDelegate.params[key] as? String
if result == nil {
result = ""
}
return result!
}
// パラメータが連想配列
func _getParamDictionary(key: String) -> Dictionary<String,AnyObject> {
var appDelegate:AppDelegate = UIApplication.sharedApplication().delegate as! AppDelegate
var result: Dictionary<String,AnyObject>?
result = appDelegate.dictParams[key]
if result == nil {
result = Dictionary<String,AnyObject>()
}
return result!
}
// パラメータが連想配列の配列
func _getParamDictionaries(key: String) -> [Dictionary<String,AnyObject>] {
var appDelegate:AppDelegate = UIApplication.sharedApplication().delegate as! AppDelegate
var result: [Dictionary<String,AnyObject>]?
result = appDelegate.arrDictParams[key]
if result == nil {
result = [Dictionary<String,AnyObject>]()
}
return result!
}とりあえずこれくらい用意しておいて自分的に困ることはありませんでした。
以上です