본문 바로가기
ios 뽀개기/ios 응용해보기

네비게이션 응용 화면간 데이터 넘기기 - 전구 켜고끄기 확대축소

by 인생여희 2017. 12. 27.
반응형

네비게이션 


//

//  ViewController.swift

//  navi

//

//  Created by MacBookPro on 2017. 12. 26..

//  Copyright © 2017년 MacBookPro. All rights reserved.

//


import UIKit


class ViewController: UIViewController,EditDelegate {


    @IBOutlet weak var imgView: UIImageView!

    @IBOutlet weak var mainTextMessage: UITextField!

    let imgOn = UIImage(named:"on.jpg")

    let imgOff = UIImage(named:"off.jpg")

    var isOn = true

    @IBOutlet weak var imageView: UIImageView!

    

    

    override func viewDidLoad() {

        super.viewDidLoad()


        imageView.image = imgOn

    }


    //세그먼트전환: 즉 새로운 화면을 전환 할때

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

        

        //도착 세그먼트를 EditViewController로 설정

        let editViewController = segue.destination as! EditViewController

        

        //버튼을 눌렀는지 바 버튼을 눌렀는지 수정화면에 전달해주기

        if segue.identifier == "EditButton"{

            editViewController.textWayValue = "버튼"

        }else if segue.identifier == "EditBarButton" {

             editViewController.textWayValue = "바버튼"

       }

        //수정화면의 텍스트 필드에 데이터 값 넘겨주기

        editViewController.varTextMessage = mainTextMessage.text!

        //수정화면의 isOn변수에 값넘겨주기

        editViewController.isOn = isOn

        editViewController.delegate = self

     }

  

    //수정화면에서 구현한 프로토콜 메서드: 수정화면의 텍스트를 메인화면에 보여주기

    func didMessageEditDone(_ controller: EditViewController, message: String) {

            mainTextMessage.text = message

    }

    

    //수정화면에서 구현한 프로토콜 메서드: 수정화면의 스위치 데이터를 전달해주기

    func didImageOnOffDone(_ controller: EditViewController, isOn: Bool) {

    

        if isOn{

            imgView.image = imgOn

        }else{

            imgView.image = imgOff

            self.isOn = false

        }

        

    }

    

    

    

}




//

//  EditViewController.swift

//  navi

//

//  Created by MacBookPro on 2017. 12. 26..

//  Copyright © 2017년 MacBookPro. All rights reserved.

//


import UIKit


//프로토콜 : 클래스의 기능을 정의, 담당한다.

protocol EditDelegate {

    //메인화면으로 텍스트 메시지 전달해주는 함수

    func didMessageEditDone(_ controller: EditViewController, message: String)

    //메인화면으로 스위치 값 전달해주는 녀석

    func didImageOnOffDone(_ controller: EditViewController, isOn: Bool)

}



class EditViewController: UIViewController {


    @IBOutlet weak var UISwitch: UISwitch!

    @IBOutlet weak var editTextMessage: UITextField!

    @IBOutlet weak var lbWay: UILabel!

    

    var textWayValue: String = "" // 버튼 or 바버튼 관련 변수

    var varTextMessage: String = "" //텍스트 필드 값 관련 변수

    var isOn = false                // 스위치 관련 변수

    

    

    var delegate: EditDelegate?

    

   

    override func viewDidLoad() {

        super.viewDidLoad()

        

        //버튼인지 바버튼인지를 메인화면으로 부터 받아서 표시

        lbWay.text = textWayValue

        

        //메인화면에서 텍스트 필드 데이터를 받아옴

        editTextMessage.text = varTextMessage

        

        //전구가

        UISwitch.isOn = isOn

    }



    //완료버튼 눌렀을 때

    @IBAction func btnDone(_ sender: UIButton) {

        

        //이 메서드가 호출되면, 메인화면으로 텍스트필드 데이터 값이 전달됨

        if delegate != nil{

            delegate?.didMessageEditDone(self, message: editTextMessage.text!)

            

            //메인화면으로 스위치 값 전달

            delegate?.didImageOnOffDone(self, isOn: isOn)

        }

        

        _ = navigationController?.popViewController(animated: true)

    }

    

    

    //전구 키고 끄기

    @IBAction func swImageOnOff(_ sender: UISwitch) {

        //켜져있으면

        if sender.isOn {

            isOn = true

        }else{

            isOn = false

        }

        

    }

}    






전구 확대 축소 기능 추가하기


메인화면


//  ViewController.swift

//  navi

//

//  Created by MacBookPro on 2017. 12. 26..

//  Copyright © 2017년 MacBookPro. All rights reserved.

//


import UIKit


class ViewController: UIViewController,EditDelegate {


    @IBOutlet weak var imgView: UIImageView!

    @IBOutlet weak var mainTextMessage: UITextField!

    let imgOn = UIImage(named:"on.jpg")

    let imgOff = UIImage(named:"off.jpg")

    var isOn = true

    var isZooms = false

    @IBOutlet weak var imageView: UIImageView!

    

    override func viewDidLoad() {

        super.viewDidLoad()


        imageView.image = imgOn

    }


    //세그먼트전환: 즉 새로운 화면을 전환 할때 수정화면으로 값 넘겨주기

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

        

        //도착 세그먼트를 EditViewController로 설정

        let editViewController = segue.destination as! EditViewController

        

        //버튼을 눌렀는지 바 버튼을 눌렀는지 수정화면에 전달해주기

        if segue.identifier == "EditButton"{

            editViewController.textWayValue = "버튼"

        }else if segue.identifier == "EditBarButton" {

             editViewController.textWayValue = "바버튼"

       }

        //수정화면의 텍스트 필드에 데이터 값 넘겨주기

        editViewController.varTextMessage = mainTextMessage.text!

        //수정화면의 isOn변수에 값넘겨주기

        editViewController.isOn = isOn

        //새로운 화면이 전환 될때 수정화면으로 값을 넘겨준다.

        editViewController.isZoom = isZooms

        editViewController.delegate = self


     }

  

    

    //수정화면에서 btnDone메서드가 실행될때 실행

    //수정화면에서 구현한 프로토콜 메서드: 수정화면의 텍스트를 메인화면에 보여주기

    func didMessageEditDone(_ controller: EditViewController, message: String) {

            mainTextMessage.text = message

    }

    

    //수정화면에서 btnDone메서드가 실행될때 실행

    //수정화면에서 구현한 프로토콜 메서드: 수정화면의 스위치 데이터를 전달해주기

    func didImageOnOffDone(_ controller: EditViewController, isOn: Bool) {

    

        if isOn{

            imgView.image = imgOn

        }else{

            imgView.image = imgOff

            self.isOn = false

        }

    }

    

    //수정화면에서 btnDone메서드가 실행될때 실행

    //수정화면에서 구현한 프로토콜 메서드: 수정화면에서 확대or 축소 데이터를 받아온다.

    func didSmallOrBig(_ controller: EditViewController, isZoom: Bool) {

        

        let scale:CGFloat = 2.0         //확대할 배율값

        var newWidth:CGFloat, newHeight:CGFloat //확대할 크기의 계산 값을 보관할 변수

  

        //false 상태면 축소

        if !isZoom {

            newWidth = imageView.frame.width/scale //이미지뷰의 프레임 너빗값을 scale로 나눔

            newHeight = imageView.frame.height/scale

            imageView.frame.size = CGSize(width: newWidth, height: newHeight)

            

        //true 면 확대

        }else{

            newWidth = imageView.frame.width*scale

            newHeight = imageView.frame.height*scale

            imageView.frame.size = CGSize(width: newWidth, height: newHeight)

        }

        

        isZooms = isZoom

    }

    

}




수정화면

//

//  EditViewController.swift

//  navi

//

//  Created by MacBookPro on 2017. 12. 26..

//  Copyright © 2017년 MacBookPro. All rights reserved.

//


import UIKit


//프로토콜 : 클래스의 기능을 정의, 담당한다.

protocol EditDelegate {

    //메인화면으로 텍스트 메시지 전달해주는 함수

    func didMessageEditDone(_ controller: EditViewController, message: String)

    //메인화면으로 스위치 값 전달해주는 녀석

    func didImageOnOffDone(_ controller: EditViewController, isOn: Bool)

    //전구 확대 축소

    func didSmallOrBig(_ controller: EditViewController, isZoom:Bool)

    

}



class EditViewController: UIViewController {


    @IBOutlet weak var smallOrBig: UIButton!

    @IBOutlet weak var UISwitch: UISwitch!

    @IBOutlet weak var editTextMessage: UITextField!

    @IBOutlet weak var lbWay: UILabel!

    

    var textWayValue: String = "" // 버튼 or 바버튼 관련 변수

    var varTextMessage: String = "" //텍스트 필드 값 관련 변수

    var isOn = false                // 스위치 관련 변수

    var isZoom = false

    

    var delegate: EditDelegate?

    

   

    override func viewDidLoad() {

        super.viewDidLoad()

        

        //버튼인지 바버튼인지를 메인화면으로 부터 받아서 표시

        lbWay.text = textWayValue

        

        //메인화면에서 텍스트 필드 데이터를 받아옴

        editTextMessage.text = varTextMessage

        

        //전구가

        UISwitch.isOn = isOn

        

        //true켜져있으면

        if isZoom {

            smallOrBig.setTitle("확대상태", for: .normal)

        }else{

            smallOrBig.setTitle("축소상태", for: .normal)

        }

    }



    //완료버튼 눌렀을 때

    @IBAction func btnDone(_ sender: UIButton) {

        

        //이 메서드가 호출되면, 메인화면으로 텍스트필드 데이터 값이 전달됨

        if delegate != nil{

            delegate?.didMessageEditDone(self, message: editTextMessage.text!)

            

            //메인화면으로 스위치 값 전달

            delegate?.didImageOnOffDone(self, isOn: isOn)

            

            //완료 버튼을 누르면 메인화면으로 전구 데이터 값 전달.

            delegate?.didSmallOrBig(self, isZoom: isZoom)

        }

        

        // 세그먼트 닫기

        _ = navigationController?.popViewController(animated: true)

    }

    

    

    //전구 키고 끄기

    @IBAction func swImageOnOff(_ sender: UISwitch) {

        //켜져있으면

        if sender.isOn {

            isOn = true

        }else{

            isOn = false

        }

        

    }

    

    //확대 or 축소

    @IBAction func smallOrBig(_ sender: UIButton) {

        //버튼을 눌렀는데 변수가 참(확대)이라면 축소

        if isZoom {

              smallOrBig.setTitle("축소상태", for: .normal)

              isZoom = false

         //버튼을 눌렀는데 변수가 거짓(축소)이라면 확대로 만들기

        }else{

            smallOrBig.setTitle("확대상태", for: .normal)

            isZoom = true

        }


}

}



반응형

'ios 뽀개기 > ios 응용해보기' 카테고리의 다른 글

유튜브 플레이어1  (0) 2018.01.22
이미지 슬라이더 애니메이션  (0) 2017.12.21
간단한 책관리 어플  (0) 2017.12.20
mysql.sock 오류 해결  (0) 2017.12.19
mac에서 php를 통해서 mysql에 삽입하기  (0) 2017.12.19

댓글