개발자 코드(Code)/Swfit

IOS) Navigation(Delegate + ImageView + Button)(사진 첨부하기)

Chain X 2020. 9. 1. 10:30
728x90
반응형

01234567
순서 1 입니다.
012345678910111213

//
//  ViewController.swift
//  NavigationController
//
//  Created by Mac on 2020/08/30.
//  Copyright © 2020 MyMac. All rights reserved.
//

import UIKit

class ViewController: UIViewController,EditDelegate {
    
     // 이미지 값 세팅
    func didImageOnOffDone(_ controller: EdiViewController, isOn: Bool) {
        if isOn{
            imgView.image = imgSingapore
            self.isOn = true
        }else{
            imgView.image = imgMalaysia
            self.isOn = false
        }
    }
    
    // 메세지 값을 텍스트 필드에 표시
    func didMessagedEditDone(_ controller: EdiViewController, message: String) {
        txtMessage.text = message
    }
    

    @IBOutlet weak var txtMessage: UITextField!
    @IBOutlet weak var imgView: UIImageView!
    
    let imgSingapore = UIImage(named: "Singapore.jpg")
    let imgMalaysia = UIImage(named: "Malaysia.jpg")
    // 스위치 디폴트 on
    var isOn = true
    
    override func viewDidLoad() {
        super.viewDidLoad()
        // Do any additional setup after loading the view.
    }
     // 세그웨이 이용해 화면 전환
        override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
            let editViewController = segue.destination as!
            EdiViewController
            
            if segue.identifier == "editBUtton"{
                //버튼을 클릭한 경우
                editViewController.textWayValue = "segue : use button"
                
            }else if segue.identifier == "editBarButton"{
                // 바 버튼을 클릭한 경우
                editViewController.textWayValue = "segue : use Bar button"
            }
            // 수정 화면으로 텍스트 메시지와 이미지 상태 전달
            editViewController.textMessage = txtMessage.text!
            editViewController.delegate = self // EdiViewController에 있는  var delegate = EditDelegate?를 사용한다.
        }

    } // ---------

 

//
//  EdiViewController.swift
//  NavigationController
//
//  Created by Mac on 2020/08/31.
//  Copyright © 2020 MyMac. All rights reserved.
//

import UIKit

    // EidtView
// protocol을 반드시 ViewController 페이지 보다 먼저써야 해야한다.
protocol EditDelegate{
    func didMessagedEditDone(_ controller: EdiViewController, message: String)
    func didImageOnOffDone(_ controller: EdiViewController, isOn: Bool)
}

class EdiViewController: UIViewController {
    
    var textMessage: String = ""
    var textWayValue: String = ""
    var isOn = false
    var delegate : EditDelegate?
    

    @IBOutlet weak var lblWay: UILabel!
    @IBOutlet weak var txtMessage: UITextField!
    @IBOutlet weak var switchisOn: UISwitch!
    
    
    
    override func viewDidLoad() {
        super.viewDidLoad()

        // Do any additional setup after loading the view.
        
        lblWay.text = textWayValue // 위에 있는 var textWayValue변수가 lblWay.text로 들어간다.
        txtMessage.text = textMessage // 위에 있는 var textMessage 변수가 txtMessage.text로 들어간다.
        switchisOn.isOn = isOn //위에 있는 var isOn 변수가 switchisOn으로 들어간다.
        
        //프로토콜 쓰면서 여기까지 써야한다.
    }
    // 이미지 true일 때 싱가폴, false일 때 말레이시아
    @IBAction func switchImgOnOff(_ sender: UISwitch) {
        if sender.isOn{
            isOn = true
        }else{
            isOn = false
        }
    }
    @IBAction func btnDone(_ sender: UIButton) {
        // 메인 화면으로 텍스트와 이미지 상태 보내기
        if delegate != nil{
            delegate?.didImageOnOffDone(self, isOn: isOn)
            delegate?.didMessagedEditDone(self, message: txtMessage.text!)
        }
        _ = navigationController?.popViewController(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.
    }
    */

}
반응형