時間を保存するアプリを開発していて、これはteratailで質問するためにサンプルで作成しました。
オレンジ画面をviewController
水色画面をview2viewController
とします。
やりたいことは
①オレンジ画面で年月日を選択する
②詳細検索ボタンを押してその日付値を水色画面に渡す
③水色画面に遷移したと同時に引き継いだ日付データがlabel1に表示される
④保存ボタンを押すとlabel2に日付データが表示される
という流れで③までは進めることができました
そして④をできるようになりたいのですがこれには複雑なコードを関数にして水色画面のviewDidLoad()の中から出す必要がありそうです、、、
ここを解決する方法をどなたか教えてください!
オレンジ画面viewControllerのコード
swift
1import UIKit 2 3class ViewController: UIViewController { 4 5 @IBOutlet weak var DP: UIDatePicker! 6 @IBOutlet weak var label: UILabel! 7 8 override func viewDidLoad() { 9 super.viewDidLoad() 10 // Do any additional setup after loading the view. 11 12 label.text = "(DP.date)" 13 14 } 15 16 17 18 19 override func prepare(for segue: UIStoryboardSegue, sender: Any?) { 20 21 if segue.identifier == "syousai_gamen" { 22 23 let nextView = segue.destination as! view2ViewController 24 25 26 27 28 nextView.datejouhou = "(DP.date)" 29 30 } 31 } 32 33 @IBAction func btn(_ sender: Any) { 34 self.performSegue(withIdentifier: "syousai_gamen", sender: self) 35 } 36 37} 38 39 40
水色画面view2viewControllerのコード
swift
1import UIKit 2 3class view2ViewController: UIViewController { 4 @IBOutlet weak var label1: UILabel! 5 @IBOutlet weak var label2: UILabel! 6 7 var datejouhou = "" 8 9 override func viewDidLoad() { 10 super.viewDidLoad() 11 12 // Do any additional setup after loading the view. 13 let kaisi_hiduke_matome = String(datejouhou.prefix(10)) 14 // 開始年の取得 15 let kaisi_year = String(kaisi_hiduke_matome.prefix(4)) 16 17 // 開始月の取得 18 var kaisi_month = "" 19 let start_kaisi_month = 5 20 let end_kaisi_month = 6 21 if start_kaisi_month > end_kaisi_month { 22 kaisi_month = "" 23 } else { 24 let startIdx = kaisi_hiduke_matome.index(kaisi_hiduke_matome.startIndex, offsetBy: start_kaisi_month, limitedBy: kaisi_hiduke_matome.endIndex) ?? kaisi_hiduke_matome.endIndex 25 let endIdx = kaisi_hiduke_matome.index(kaisi_hiduke_matome.startIndex, offsetBy: end_kaisi_month + 1, limitedBy: kaisi_hiduke_matome.endIndex) ?? kaisi_hiduke_matome.endIndex 26 kaisi_month = String(kaisi_hiduke_matome[startIdx..<endIdx]) 27 } 28 29 // 開始日付の取得 30 var kaisi_day = "" 31 let start_kaisi_day = 8 32 let end_kaisi_day = 9 33 if start_kaisi_day > end_kaisi_day { 34 kaisi_day = "" 35 } else { 36 let startIdx = kaisi_hiduke_matome.index(kaisi_hiduke_matome.startIndex, offsetBy: start_kaisi_day, limitedBy: kaisi_hiduke_matome.endIndex) ?? kaisi_hiduke_matome.endIndex 37 let endIdx = kaisi_hiduke_matome.index(kaisi_hiduke_matome.startIndex, offsetBy: end_kaisi_day + 1, limitedBy: kaisi_hiduke_matome.endIndex) ?? kaisi_hiduke_matome.endIndex 38 kaisi_day = String(kaisi_hiduke_matome[startIdx..<endIdx]) 39 } 40 41 if datejouhou == "" { 42 label1.text = "条件が未入力です" 43 } else { 44 label1.text = "(kaisi_year)/(kaisi_month)/(kaisi_day)" 45 } 46 47 48 49 50 } 51 52 @IBAction func hozonBtn(_ sender: Any) { 53 label2.text = kaisi_year 54 55 ⬆︎????当然ですがここでエラーが出ています。これを表示させれるようにしたいです。 56 } 57 58 59} 60
上記がxcodeの中身です。
よろしくお願いいたします。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。