swiftの学習(xcodeの画面遷移)
画面遷移
1つの画面だけだとあまりやることがないし、別の画面を一時的に呼び出して使用したいこともあるので…
遷移元設定
プロジェクトを作成し、storyboardにViewControllerを追加
遷移元と遷移先にアイテムを設定
buttonをcontrolを押しながらドラッグしてセグエを設定
なんでもいいかもしれないけど以下を設定
セグエのプロパティを指定
※現時点ではデフォルト
遷移先設定
戻れないので戻るためのメソッドを用意(ViewController.swift)
// // ViewController.swift // import UIKit class ViewController: UIViewController { override func viewDidLoad() { super.viewDidLoad() // Do any additional setup after loading the view, typically from a nib. } override func didReceiveMemoryWarning() { super.didReceiveMemoryWarning() // Dispose of any resources that can be recreated. } // 戻るボタン押下時のメソッド @IBAction func unWindows(segue: UIStoryboardSegue){ } }
※以下を追加
@IBAction func unWindows(segue: UIStoryboardSegue){
}
遷移先のボタンを「戻る」に変えて、controlでドラッグ
actionのセグエに先ほど追加した「unWindows」を選択
実行して確認
画面遷移時に指定した値を渡す
セグエのidentifierに名前を設定する
ViewDetailController.swiftファイルを用意して遷移先のviewと紐付け
ViewController.swift
// // ViewController.swift // import UIKit class ViewController: UIViewController { @IBOutlet weak var txt_data1: UITextField! @IBOutlet weak var txt_data2: UITextField! override func viewDidLoad() { super.viewDidLoad() // Do any additional setup after loading the view, typically from a nib. } override func didReceiveMemoryWarning() { super.didReceiveMemoryWarning() // Dispose of any resources that can be recreated. txt_data1.text = "" txt_data2.text = "" } override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject!) { println(segue.identifier) if segue.identifier == "page1" { // ViewDetailControllerへ遷移する際、値を渡す let viewDetailController: ViewDetailController = segue.destinationViewController as ViewDetailController // データを退避 viewDetailController._data1 = txt_data1.text viewDetailController._data2 = txt_data2.text } } // 戻るボタン押下時のメソッド @IBAction func unWindows(segue: UIStoryboardSegue){ if segue.identifier == "page2" { // 遷移元のControllerを取得 let viewDetailController: ViewDetailController = segue.sourceViewController as ViewDetailController // 画面にデータを設定 txt_data1.text = viewDetailController.txt_set_data1.text txt_data2.text = viewDetailController.txt_set_data2.text } } }
ViewDetailController.swift
// // ViewDetailController.swift // import UIKit class ViewDetailController: UIViewController { @IBOutlet weak var txt_set_data1: UITextField! @IBOutlet weak var txt_set_data2: UITextField! var _data1 = "" var _data2 = "" override func viewDidLoad() { super.viewDidLoad() // Do any additional setup after loading the view, typically from a nib. // ここで設定 txt_set_data1.text = _data1 txt_set_data2.text = _data2 } override func didReceiveMemoryWarning() { super.didReceiveMemoryWarning() // Dispose of any resources that can be recreated. } }
実行
※gifにするのは結構面倒だけどやっぱり動きがあるほうがわかりやすいと思う
まとめ
画面遷移の場合はセグエとか遷移する際一部動きを意識しないといけない。
まだ、マニュアルがよくわからないので検索しながらいくしかないけど。もう少しの予感
データの保存、読み込みなどやweb apiなどをうまく扱えるようになればアプリを作ってみてもいいかも
一気にやったらわからないことだらけでやる気をなくすのが悪いクセだけど治すより自身であんまりストレスを
抱え込まないようにして対応しようと思う。