본문 바로가기
ios 뽀개기/실전

커스터마이징 버튼

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

//

//  ViewController.swift

//  custmizing

//

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

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

//


import UIKit


class ViewController: UIViewController {


    //입력용 컨트롤

    var paramEmail: UITextField! // 이메일 입력 필드

    var paramUpdate: UISwitch! // 스위치 객체

    var paramInterval: UIStepper! // 스테퍼

    

    //출력용 레이블

    var txtUpdate: UILabel! //스위치 컨트롤의 값을 표현할 레이블

    var txtInterval: UILabel! // 스테퍼 컨트롤의 값을 표현할 레이블

    

    

    override func viewDidLoad() {

        super.viewDidLoad()

    

        // 1. 네비게이션 바 타이틀을 입력한다.

        self.navigationItem.title = "설정"

        

        // 2. 이메일 레이블을 생성하고 영역과 기본 문구를 설정한다.

        let lblEmail = UILabel()

        lblEmail.frame = CGRect(x:30 ,y:100, width: 100, height: 30)

        lblEmail.text = "이메일"

    

        //3. 레이블의 폰트를 설정한다.

        lblEmail.font = UIFont.systemFont(ofSize: 14)

        

        //4.레이블을 루트뷰에 추가한다.

        self.view.addSubview(lblEmail)

        

        

        //자동갱신 레이블을 생성하고 루트 뷰에 추가한다.

        let lblUpdate = UILabel()

        lblUpdate.frame = CGRect(x:30,y:150 ,width:100 ,height:30)

        lblUpdate.text = "자동갱신"

        lblUpdate.font = UIFont.systemFont(ofSize: 14)

        self.view.addSubview(lblUpdate)

        

        //갱신주기 레이블을 생성하고 루트 뷰에 추가

        let lblInterval = UILabel()

        lblInterval.frame =  CGRect(x:30,y:200 ,width:100 ,height:30)

        lblInterval.text = "갱신주기"

        lblInterval.font = UIFont.systemFont(ofSize: 14)

        self.view.addSubview(lblInterval)

        

        

        //이메일 입력을 위한 텍스트 필드 추가

        self.paramEmail = UITextField()

        self.paramEmail.frame = CGRect(x:120, y:100 , width:220 , height:30)

        self.paramEmail.font = UIFont.systemFont(ofSize: 13)

        self.paramEmail.borderStyle = UITextBorderStyle.roundedRect

        self.paramEmail.autocapitalizationType = .none

        self.view.addSubview(self.paramEmail)

        

        //스위치 객체를 생성한다.

        self.paramUpdate = UISwitch()

        self.paramUpdate.frame = CGRect(x:120, y:150, width: 50, height: 30)

        //스위치가 on 되어 있는 상태를 기본값으로 설정한다.

        self.paramUpdate.setOn(true, animated: true)

        self.view.addSubview(self.paramUpdate)

        

        //갱신주기를 위한 스태퍼를 추가한다.

        self.paramInterval = UIStepper()

        self.paramInterval.frame = CGRect(x:120, y:200, width: 50, height: 30)

        self.paramInterval.minimumValue = 0 //스태퍼가 가질 수 있는 최소값

        self.paramInterval.maximumValue = 100 //스태퍼가 가질 수 있는 최대 값

        self.paramInterval.stepValue = 1 // 스태퍼의 값 변경 단위

        self.paramInterval.value = 0    //초기값 설정

        self.view.addSubview(self.paramInterval)

        

        

        

        // 스위치 객체의 값을 표현할 레이블을 추가한다.

        self.txtUpdate = UILabel( )

        self.txtUpdate.frame = CGRect(x: 250, y: 150, width: 100, height: 30)

        self.txtUpdate.font = UIFont.systemFont(ofSize: 12)

        self.txtUpdate.textColor = UIColor.red // 1. 텍스트의 색상 설정

        self.txtUpdate.text = "갱신함" // 2. "갱신함" or "갱신하지 않음"

        self.view.addSubview(self.txtUpdate)

        

        // 스테퍼의 값을 텍스트로 표현할 레이블을 추가한다.

        self.txtInterval = UILabel( )

        self.txtInterval.frame = CGRect(x: 250, y: 200, width: 100, height: 30)

        self.txtInterval.font = UIFont.systemFont(ofSize: 12)

        self.txtInterval.textColor = UIColor.red

        self.txtInterval.text = "0분마다"

        self.view.addSubview(self.txtInterval)

        

        //스위치와 스태퍼 컨트롤러의 value changed 이벤트를 각각 액션 메소드에 연결한다.

        self.paramUpdate.addTarget(self, action: #selector(presentUpdateValue(_:)), for: .valueChanged)

        

        self.paramInterval.addTarget(self, action: #selector(presentIntervalValue(_:)), for: .valueChanged)

        

        

        //전송 버튼을 내비게이션 아이템에 추가하고, submit 메소드에 연결한다.

        let submitBtn = UIBarButtonItem(barButtonSystemItem: .compose, target: self, action: #selector(submit(_:)))

        self.navigationItem.rightBarButtonItem = submitBtn

    }


    //스위치와 상호반응할 액션 메소드

    @objc func presentUpdateValue(_ sender: UISwitch){

        self.txtUpdate.text = (sender.isOn == true ? "갱신함" : "갱신하지 않음")

    }

    

    

    //스테퍼와 상호반응할 액션 메소드

    @objc func presentIntervalValue(_ sender: UIStepper){

        self.txtInterval.text = ("\( Int(sender.value)) 분마다")

    }

    

    //버튼이 눌렀을 때

    @objc func submit(_ sender: Any){

        

        let rvc = ReadViewController()

        

        rvc.pEmail = self.paramEmail.text

        rvc.pUpdate = self.paramUpdate.isOn

        rvc.pInterval = self.paramInterval.value

        self.navigationController?.pushViewController(rvc, animated: true)

    

    }

    

    override func didReceiveMemoryWarning() {

        super.didReceiveMemoryWarning()

        // Dispose of any resources that can be recreated.

    }



}
















//

//  ReadViewController.swift

//  custmizing

//

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

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

//


import UIKit




class ReadViewController: UIViewController {


    //전달된 값을 저장할 변수를 정의 한다.

    

    var pEmail: String?

    var pUpdate: Bool?

    var pInterval: Double?

    

    override func viewDidLoad() {

        super.viewDidLoad()

        

        //배경색 지정

       self.view.backgroundColor = UIColor.green

    

        let email = UILabel()

        let update = UILabel()

        let interval = UILabel()

        

        email.frame = CGRect(x: 50, y: 100, width: 300, height: 30)

        update.frame = CGRect(x: 50, y: 150, width: 300, height: 30)

        interval.frame = CGRect(x: 50, y: 200, width: 300, height: 30)

        

        //전달받은 값을 레이블에 표시한다.

        email.text = "전달받은 이메일:\(String(describing: self.pEmail))"

        update.text = "업데이트 여부\(self.pUpdate == true ? "업데이트 함" : "업데이트 안함")"

        interval.text = "업데이트 주기 : \(self.pInterval!) 분마다"

        

        self.view.addSubview(email)

        self.view.addSubview(update)

        self.view.addSubview(interval)

        

    }


    override func didReceiveMemoryWarning() {

        super.didReceiveMemoryWarning()

        // Dispose of any resources that can be recreated.

    }

    


    /*

    // 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.destinationViewController.

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

    }

    */


}

반응형

'ios 뽀개기 > 실전' 카테고리의 다른 글

메모장 - 커스텀(x)  (0) 2018.01.03
커스텀 내비게이션 바  (0) 2018.01.03
탭바 커스텀하기  (0) 2018.01.02
커스텀 버튼 및 데이터 전달하기  (0) 2018.01.02
버튼 커스터마이징  (0) 2017.12.27

댓글