네비게이션
//
// 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 |
댓글