[Swift] 화면 마이그레이션 시 대상 화면으로 값 전달

5789 단어 iOSSwift

입문


업데이트에서 수정된 응용 프로그램에는 유사한 기능의 화면 2개를 추가하는 필수 조건이 있지만'이건 솔직하게 2개의 화면을 만드는 것보다 원본을 판정하고 화면 항목을 전환하는 디스플레이가 오히려 똑똑하다'는 생각에서 출발하여 원본의 정보를 어떻게 이동 목적지에 전달할 것인가그곳에서 타당성 검증이 진행되었다.

개발 환경


터미널: MacBook Pro/MacOS10.14.5(Mojave)
Xcode:10.2.1
Swift:5

한 일


2개의 화면을 생성하여 소스 화면에서 대상 화면으로 값을 마이그레이션하는지 확인
(받은 값을 기반으로 디스플레이 전환, 검증 필요 없으므로 객체에 속하지 않음)

구현 샘플 소스


화면 이미지 ※ 화면은 스토리보드로 제작
소스 마이그레이션

목표

MotoViewController.소스 화면 변환
import UIKit

class MotoViewController: UIViewController {

    // 受け渡す値の入力エリア
    @IBOutlet weak var txtPassString: UITextField!

    override func viewDidLoad() {
        super.viewDidLoad()
        // Do any additional setup after loading the view.
    }

    // 「遷移先画面へ」ボタン押下時
    @IBAction func transition(_ sender: Any) {
        let storyboard = self.storyboard
        // 遷移先画面
        let sakiView = storyboard!.instantiateViewController(withIdentifier: "saki") as! SakiViewController
        // 遷移先画面の項目へ受け渡す値をセット
        sakiView.passedString = txtPassString.text!
        // 画面遷移
        self.present(sakiView, animated: true, completion: nil)
    }
}
SakiViewController.대상 화면 변환
import UIKit

class SakiViewController: UIViewController {

    @IBOutlet weak var txtPassedString: UITextField!

    var passedString: String?

    override func viewDidLoad() {
        super.viewDidLoad()
        // Do any additional setup after loading the view.

        if (passedString != nil) {
            txtPassedString.text = passedString
        }
    }
}
코드의 양이 생각보다 적다.
하지만 마이그레이션 대상 화면의 Storyboard ID를 잊지 마십시오.(아래 이미지 참조)

화면 예


GIF의 작업 이미지입니다.

파란색 화면(이동 소스)에 "test"를 입력하면 노란색 화면(이동 목적지)으로 전달되어 화면 중앙에 표시됩니다.
※ GIF 제작 앱에서 동작 인상을 볼 때 눈치채지 못했지만 화면이 이동할 때 화면이 깜박거립니다.
못생겨서 못 참겠어요.

참고로 하는 사이트 등


카드 통신 - [Swift/iOS] 화면 이동 시 값 전달
https://capibara1969.com/1060/#toc10

좋은 웹페이지 즐겨찾기