Notice
Recent Posts
Recent Comments
Link
ยซ   2024/05   ยป
์ผ ์›” ํ™” ์ˆ˜ ๋ชฉ ๊ธˆ ํ† 
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
Archives
Today
Total
๊ด€๋ฆฌ ๋ฉ”๋‰ด

lgvv98

Navigation - ์ฝ”๋“œ๋ฆฌ๋ทฐ ๋ณธ๋ฌธ

โš ๏ธ deprecated โš ๏ธ/Doit ์•„์ดํฐ ์•ฑ(์ž…๋ฌธ)

Navigation - ์ฝ”๋“œ๋ฆฌ๋ทฐ

๐Ÿฅ• ์บ๋Ÿฟ๋งจ 2021. 3. 2. 13:23

 

์ด๋ฒˆ์—๋Š” ํ”„๋กœํ† ์ฝœ๊ณผ ๋ทฐ ๊ฐ„์˜ ๋ฐ์ดํ„ฐ ์ „๋‹ฌ๋ฐฉ๋ฒ•์— ๋Œ€ํ•ด์„œ ์•Œ์•„๋ด์•ผ๊ฒ ๋‹ค.

๋‚ด๊ฐ€ ์ œ์ผ ๋งŽ์ด ์‹ค์ˆ˜ํ•˜๋Š” prepare์— ๋Œ€ํ•ด์„œ๋„ ํ•œ๋ฒˆ ๋ณด์ž. ( ์‹ค์ˆ˜๋ผ๊ธฐ ๋ณด๋‹จ ์ž๊พธ ์•ˆ์™ธ์›Œ์ ธ์„œ ์ฑ…์„ ์ž๊พธ ์ฐพ์•„๋ณธ๋‹ค ^__^ )

 

ios ๊ฐœ๋ฐœ์€ MVC ํŒจํ„ด์œผ๋กœ 

Model(๋ฐ์ดํ„ฐ๋‹ด๋‹น) - View(ํ™”๋ฉด ํ‘œํ˜„ ๋‹ด๋‹น) - Controller(๋ชจ๋ธ๊ณผ ๋ทฐ์‚ฌ์ด์˜ ์ด๋ฒคํŠธ๋ฅผ ์ž…๋ ฅ๋ฐ›์•„ ์ฒ˜๋ฆฌ) ๋กœ ๊ตฌ์„ฑ๋œ๋‹ค

 

์•„๋‹ˆ ๊ทธ๋ž˜์„œ ์ด๊ฒŒ ๋ฌด์Šจ ๋ง์ด๋ƒ๋ฉด ์˜ˆ๋ฅผ๋“ค์–ด view๊ฐ€ 2๊ฐœ์ด๋ฉด model๋„ 2๊ฐœ๊ฐ€ ๋˜๋Š”๋ฐ, View ๊ฐ„์— ๋ฐ์ดํ„ฐ๋ฅผ ์ „๋‹ฌ์„ ์–ด๋–ป๊ฒŒ ํ•ด์•ผํ• ์ง€ ๊ณ ๋ฏผ์— ๋น ์ง€๊ฒŒ ๋œ๋‹ค.

 

prepare ์ชฝ ์ฝ”๋“œ ์ฃผ์„์„ ๊ผผ๊ผผํ•˜๊ฒŒ ๋ณด๊ธฐ ๋ฐ”๋ž€๋‹ค.

 

์Šคํ† ๋ฆฌ ๋ณด๋“œ์—์„œ identifier ์„ค์ •๋„ ๋‹น์—ฐํžˆ.. ํ•ด์ค˜์•ผ๊ฒ ์ฃ ?

์„ธ๊ทธ์—ฐ๊ฒฐ๋„ ๋งˆ์ฐจ๊ฐ€์ง€๊ฒ ์ฃ ?

 

์ด๋Ÿฐ๊ฑด ๋„˜ ๊ธฐ๋ณธ์ด๋‹ˆ๊นŒ ์„œ์ˆ  ์•ˆํ• ๊ฑด๋ฐ,, ์ ˆ๋Œ€ ๊นŒ๋จน์„ ์ผ ์—†๊ฒ ์ง€๋งŒ,, ๊ทธ๋Ÿผ์—๋„ ๋ถˆ๊ตฌํ•˜๊ณ  ๊นŒ๋จน์—ˆ๋‹ค๋ฉด,,, ์ธํ„ฐ๋„ท ์ฐพ์•„๋ณด๊ธฐ...

 

 

ํ”„๋กœํ† ์ฝœ๋„ ์‚ฌ์šฉ๋ฒ•๊ณผ ์ฃผ์„์„ ํ†ตํ•ด ์ดํ•ดํ•˜๊ธฐ

 

์•„ ๋งž์•„.. ๊ทผ๋ฐ ์กฐ๊ธˆ ํŠน์ดํ•œ๊ฒŒ ์žˆ์—ˆ๋Š”๋ฐ

๊ทธ๊ฒƒ์€ ๋ฐ”๋กœ delegate ๋ณ€์ˆ˜๋‹ค..  --> ์—„์ฒญ ์‹ ๊ธฐํ•˜๋”๋ผ

๋ฐ”๋€ ๋‚ด์šฉ์„ ์ „๋‹ฌํ•˜๊ธฐ ์œ„ํ•จ!!

๊ทผ๋ฐ ์‚ฌ์‹ค ๋‚ด ๊นƒํ—ˆ๋ธŒ์— ios_basic ๋ถ€๋ถ„์„ ๋ณด๋ฉด delegate๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š๊ณ ๋„ ์ „๋‹ฌํ•˜๋Š” ๋ฒ•๋„ ์žˆ์œผ๋‚˜, ๊ทธ๊ฑด basic ๋ฆฌ๋ทฐ ์‹œ๊ฐ„์— ์•Œ์•„๋ณด๋„๋ก ํ•˜์ž

 

 

//
//  EditViewController.swift
//  Navigation
//
//  Created by Hamlit Jason on 2021/02/23.
//

import UIKit

protocol EditDelegate {
    // ํ”„๋กœํ† ์ฝœ์ด๋ž€ ํŠน์ • ๊ฐ์ฒด๊ฐ€ ๊ฐ–์ถ”์–ด์•ผ ํ•  ๊ธฐ๋Šฅ์ด๋‚˜ ์†์„ฑ์— ๋Œ€ํ•œ ์„ค๊ณ„๋„๋ผ๊ณ  ํ•  ์ˆ˜ ์žˆ๋‹ค. ์‹ค์งˆ์ ์œผ๋กœ ์•„๋ฌด๋‚ด์šฉ๋„ ์—†์œผ๋‚˜, ์ด ํ”„๋กœํ† ์ฝœ์„ ์ƒ์†๋ฐ›์€ ๊ฐ์ฒด๋Š” ์•„๋ž˜ ํ•จ์ˆ˜๋ฅผ ๊ผญ ๋งŒ๋“ค์–ด์•ผ ํ•œ๋‹ค ๊ทธ๋ ‡์ง€ ์•Š์œผ๋ฉด ์—๋Ÿฌ๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค.
    func didMessageEditDone(_ controller : EditViewController, message : String)
    func didImageOnOffDone(_ cotroller : EditViewController, isOn : Bool)
    func didImageZoomDone(_ controller : EditViewController, isZoom : Bool)
}

class EditViewController: UIViewController {
    
    @IBOutlet var swIsOn: UISwitch!
    var textWayValue : String = ""
    var textMessage : String = ""
    var delegate : EditDelegate? // delegate๋ณ€์ˆ˜๋ฅผ ์„ ์–ธ
    var isOn = false
    var isZoom = false
    
    
    @IBOutlet var lblWay: UILabel!
    @IBOutlet var txMessage: UITextField!
    
    @IBOutlet var btnZoomlabel: UIButton!
    
    override func viewDidLoad() {
        lblWay.text = textWayValue
        txMessage.text = textMessage
        swIsOn.isOn = isOn
        
    }
    
    @IBAction func btnDone(_ sender: UIButton) {
        if delegate != nil {
            delegate?.didMessageEditDone(self, message: txMessage.text!) // didMessageEditDone ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœํ•˜๋ฉด์„œ ์ˆ˜์ •ํ™”๋ฉด์˜ ํ…์ŠคํŠธํ•„๋“œ ๋‚ด์šฉ์„ ๋ฉ”์‹œ์ง€ ๋ฌธ์ž์—ด๋กœ ์ „๋‹ฌํ•œ๋‹ค. ๋‹ค์‹œ ๋งํ•ด ์ˆ˜์ •ํ™”๋ฉด์˜ ํ…์ŠคํŠธ ํ•„๋“œ ๋‚ด์šฉ, ์ฆ‰ ๋ฐ์ดํ„ฐ๋ฅผ ๋ฉ”์ธํ™”๋ฉด์œผ๋กœ ์ „๋‹ฌํ•ฉ๋‹ˆ๋‹ค.
            delegate?.didImageOnOffDone(self, isOn: isOn) // ํ•จ์ˆ˜ ํ˜ธ์ถœ์‹œ ๋ฐ”๋€๋‚ด์šฉ ์ „๋‹ฌ
            
            delegate?.didImageZoomDone(self, isZoom: isZoom)
        }
        
        _ = navigationController?.popViewController(animated: true) // ์•ก์…˜์„ธ๊ทธ๋ฅผ showํ˜•ํƒœ๋กœ ํ–ˆ๊ธฐ ๋•Œ๋ฌธ์— popํ˜•ํƒœ๋กœ ํ•ด์•ผํ•œ๋‹ค - ๋ฉ”์ธํ™”๋ฉด์œผ๋กœ ๋‹ค์‹œ ๋Œ์•„๊ฐ€๋Š” ์ฝ”๋“œ
    }
    
    @IBAction func btnSize(_ sender: UIButton) {
        if isZoom == false{
            btnZoomlabel.setTitle("์ถ•์†Œ", for: .normal)
            isZoom = true
        } else {
            btnZoomlabel.setTitle("ํ™•๋Œ€", for: .normal)
            isZoom = false
        }
        
    }
    @IBAction func swImageOnOff(_ sender: UISwitch) {
        if sender.isOn {
            isOn = true
        } else {
            isOn = false
        }
    }
}
โ€‹
//
//  ViewController.swift
//  Navigation
//
//  Created by Hamlit Jason on 2021/02/23.
//

import UIKit

class ViewController: UIViewController, EditDelegate {
   
    
    

    override func viewDidLoad() {
        super.viewDidLoad()
        // Do any additional setup after loading the view.
        imgView.image = imgOn
    }
    
    
    let imgOn = UIImage(named: "lamp_on.png")
    let imgOff = UIImage(named: "lamp_off.png")
    
    var isOn = true
    var orgZoom = false
    var isZoom = false
    
    @IBOutlet var txMessage: UITextField!
    @IBOutlet var imgView: UIImageView!
    
    override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
        
        let editViewController = segue.destination as! EditViewController // ๋‹ค๋ฅธ ๋ทฐ ์ปจํŠธ๋กค๋Ÿฌ์— ์ •๋ณด๋ฅผ ์ „๋‹ฌํ•˜๊ธฐ ์œ„ํ•ด์„œ ์ด๋ ‡๊ฒŒ ์‚ฌ์šฉํ•ด์•ผ ํ•œ๋‹ค.
        
        if segue.identifier == "editButton" {
            editViewController.textWayValue = "segue : use button"
            
        } else if segue.identifier == "editBarButton" {
            editViewController.textWayValue = "segue : use Bar button"
        }
        
        editViewController.textMessage = txMessage.text! // ๋ฉ”์ธ์—์„œ ์ˆ˜์ •์œผ๋กœ ์ „๋‹ฌํ•˜๋Š” ์ฝ”๋“œ
        editViewController.delegate = self // ์ˆ˜์ •์—์„œ ๋ฉ”์ธ์œผ๋กœ ํ…์ŠคํŠธ ์ „๋‹ฌ๋ฐ›๋Š” ์ฝ”๋“œ
        editViewController.isOn = isOn // ์Šค์œ„์น˜ ์ƒํƒœ ์ „๋‹ฌํ•˜๊ธฐ ์œ„ํ•ด์„œ
        editViewController.isZoom = isZoom
    }

    func didMessageEditDone(_ controller: EditViewController, message: String) {
        // ์—๋””ํŠธ ๋ทฐ ์ปจํŠธ๋กค๋Ÿฌ์—์„œ ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœํ•˜๋ฉฐ ๋ฉ”์‹œ์ง€๋ฅผ ์ „๋‹ฌํ•ด ์ฃผ๋Š”๋ฐ, ์ด ๋ฉ”์‹œ์ง€์˜ ์ŠคํŠธ๋ง ๊ฐ’์„ ๋ฉ”์ธํ™”๋ฉด์˜ ํ…์ŠคํŠธ ํ•„๋“œ์— ํ…์ŠคํŠธ๋กœ ๋ณด์—ฌ์ค€๋‹ค. ์ฆ‰, ์ˆ˜์ •ํ™”๋ฉด์˜ ๋ฐ์ดํ„ฐ๋ฅผ ๋ฉ”์ธํ™”๋ฉด์— ์ „๋‹ฌํ•˜์—ฌ ๋ณด์—ฌ์ฃผ๋Š” ๊ฒƒ์ด๋‹ค.
        txMessage.text = message
    }
    
    func didImageOnOffDone(_ cotroller: EditViewController, isOn: Bool) {
        if isOn {
            imgView.image = imgOn
            self.isOn = true
        } else {
            imgView.image = imgOff
            self.isOn = false
        }
    }
    

    func didImageZoomDone(_ controller: EditViewController, isZoom: Bool) {
        let scale:CGFloat = 2.0
        var newWidth:CGFloat, newHeight:CGFloat
        
        if isZoom {
            if orgZoom {
                
            } else {
                self.isZoom = false
                self.orgZoom = true
                newWidth = imgView.frame.width*scale
                newHeight = imgView.frame.height*scale
                imgView.frame.size = CGSize(width: newWidth, height: newHeight)
            }
            
            print("Zoom: true")
        } else {
            if orgZoom  {
                self.isZoom = true
                self.orgZoom = false
                newWidth = imgView.frame.width/scale
                newHeight = imgView.frame.height/scale
                imgView.frame.size = CGSize(width: newWidth, height: newHeight)
            } else {
                
            }
            
            print("Zoom: false")
        }
    }
    
}

Comments