swift submitvalue back userdefaults 스위프트 이전 화면 유저디폴트 데이터 전달




코코아 터치 프레임워크에서 제공하는 UserDefaults 객체를 통해 값을 주고 받는 방법.


앱을 삭제하기 전까지는 저장된 값이 반영구적으로 유지된다는 장점이 있습니다.


비교적 단순하면서도 값이 유지되어야 하는 로그인 여부나 간단한 설정 정보 등을 저장하는 경우가 많습니다.



//

//  ViewController.swift

//  SubmitValueBack

//

//  Created by stayfoolish on 24/11/2018.

//  Copyright © 2018 stayfoolish. All rights reserved.

//


import UIKit


class ViewController: UIViewController {

    

    // 값을 화면에 표시하기 위한 아울렛 변수들

    @IBOutlet var resultEmail: UILabel!

    @IBOutlet var resultUpdate: UILabel!

    @IBOutlet var resultInterval: UILabel!

    

    

    

    override func viewDidLoad() {

        super.viewDidLoad()

        // Do any additional setup after loading the view, typically from a nib.

    }


    // 화면에 표시될 때마다 실행되는 메소드

    override func viewWillAppear(_ animated: Bool) {

        // UserDefault 객체의 인스턴스를 가져온다.

        let ud = UserDefaults.standard

        

        

        if let email = ud.string(forKey: "email") {

            // 이메일 표시

            resultEmail.text = email

        }

        let update = ud.bool(forKey: "isUpdate")

            // 자동 갱신 여부 표시

            resultUpdate.text = (update == true ? "자동갱신":"자동갱신안함")

        

        let interval = ud.double(forKey: "interval")

            // 갱신 주기 표시

            resultInterval.text = "\(Int(interval))분마다"

        

    }


}



//

//  FormViewController.swift

//  SubmitValueBack

//

//  Created by stayfoolish on 24/11/2018.

//  Copyright © 2018 stayfoolish. All rights reserved.

//


import UIKit


class FormViewController: UIViewController {


    // 이메일 주소를 입력받는 텍스트필드

    @IBOutlet var email: UITextField!

    

    // 자동 갱신 여부를 설정하는 스위치

    @IBOutlet var isUpdate: UISwitch!

    

    // 갱신 주기를 설정하는 스테퍼

    @IBOutlet var interval: UIStepper!

    

    // 자동갱신 여부를 표시하는 레이블

    @IBOutlet var isUpdateText: UILabel!

    

    // 갱신주기를 텍스트로 표시하는 레이블

    @IBOutlet var intervalText: UILabel!

    

    

    override func viewDidLoad() {

        super.viewDidLoad()

        // Do any additional setup after loading the view, typically from a nib.

    }

    

    // 자동 갱신 여부가 바뀔 때마다 호출되는 메소드

    @IBAction func onSwitch(_ sender: UISwitch) {

        if (sender.isOn == true) {

            self.isUpdateText.text = "갱신함"

        } else {

            self.isUpdateText.text = "갱신하지 않음"

        }

        

        

    }

    

    // 갱신주기가 바뀔 때마다 호출되는 메소드

    @IBAction func onStepper(_ sender: UIStepper) {

        let value = Int(sender.value)

        self.intervalText.text = "\(value)분 마다"

    }

    

    

    // Submit 버튼을 클릭했을 때 호출되는 메소드

    @IBAction func onSubmit(_ sender: Any){

        

        // UserDefault 객체의 인스턴스를 가져온다.

        let ud = UserDefaults.standard

        

        // 값을 가져온다.

        ud.set(self.email.text, forKey: "email")

        ud.set(self.isUpdate.isOn, forKey: "isUpdate")

        ud.set(self.interval.value, forKey: "interval")

        

        // 이전 화면으로 복귀한다.

        self.presentingViewController?.dismiss(animated: true)

    }

    


    /*

    // MARK: - Navigation


    // In a storyboard-based application, you will often want to do a little preparation before navigation

    override func prepare(for segue: UIStoryboardSegue, sender: Any?) {

        // Get the new view controller using segue.destination.

        // Pass the selected object to the new view controller.

    }

    */


}
















+ Recent posts