質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
Xcode

Xcodeはソフトウェア開発のための、Appleの統合開発環境です。Mac OSXに付随するかたちで配布されています。

Swift

Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

Q&A

解決済

1回答

840閲覧

複雑な関数の作り方がわかりません

mokimokio

総合スコア53

Xcode

Xcodeはソフトウェア開発のための、Appleの統合開発環境です。Mac OSXに付随するかたちで配布されています。

Swift

Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

0グッド

0クリップ

投稿2022/01/04 06:07

時間を保存するアプリを開発していて、これは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の中身です。

よろしくお願いいたします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

具体的にはメソッドを追加して、それをボタンアクション内で実行します。

UIKitを使った開発は、初め全体像が掴みづらいので、チュートリアルをやってみるといいかもしれません。
(iOS Dev Essential - Apple Developer)[https://developer.apple.com/tutorials/app-dev-training/getting-started-with-today]

投稿2022/01/04 07:44

wsb

総合スコア194

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問