14 ios 스위프트 네비게이션 바
viewcontroller
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 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 | // // ViewController.swift // Navigation // // Created by MacBookPro on 2017. 11. 27.. // Copyright © 2017년 MacBookPro. All rights reserved. // import UIKit class ViewController: UIViewController,EditDelegate { let imgOn = UIImage(named: "on.jpg") let imgOff = UIImage(named: "off.jpg") var isOn = true @IBOutlet weak var imgView: UIImageView! @IBOutlet weak var txMessage: UITextField! override func viewDidLoad() { super.viewDidLoad() imgView.image = imgOn } override func didReceiveMemoryWarning() { super.didReceiveMemoryWarning() // Dispose of any resources that can be recreated. } //세그웨이를 이용해서 화면 전환 override func prepare(for segue: UIStoryboardSegue, sender: Any?) { //세그웨이의 도착 컨트롤러를 editviewcontroller형태를 가지는 segue.destination viewcontroller로 선언한다. 그리고 세그웨이의 아이디에 따라 다르게 동작하도록 if문을 사용한다. 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.isOn = isOn editViewController.delegate = self } //프로토콜에서 정의한 함수: editviewcontroller 에서 함수를 호출하며 메인 화면에 텍스트 필드에 보여줌 func didMessageEditDone(_ controller: EditViewController, message: String) { //즉, 수정화면의 데이터를 메인화면의 데이터로 전달 txMessage.text = message } //전구 이미지 값 세팅 func didImageOnOff(_ controller: EditViewController, isOn: Bool) { if isOn { imgView.image = imgOn }else { imgView.image = imgOff self.isOn = false } } } | cs |
editviewcontroller
//
// EditViewController.swift
// Navigation
//
// Created by MacBookPro on 2017. 11. 27..
// Copyright © 2017년 MacBookPro. All rights reserved.
//
import UIKit
//프로토콜 형태의 델리게이트 추가
//프로토콜이란 특정 객체가 갖추어야 할 기능이나 속성에 대한 설계도
//형태만 있을 뿐 실질적인 내용은 프로토콜을 이용하는 객체에서 정의 한다.
//예
/*
protocol Calculator {
func add(op1:Int, op2:Int) -> Int {
return op1 + op2
}
func sub(op1:Int, op2:Int) -> Int {
return op1 - op2
}
}
*/
//프로토콜 선언
protocol EditDelegate {
//수정화면의 메시지를 메인화면으로 보내기 위한 함수
func didMessageEditDone(_ controller: EditViewController, message: String)
//수정화면의 스위치 상태를 메인화면으로 보내기 위해 함수 추가
func didImageOnOff(_ controller: EditViewController, isOn:Bool)
}
//프로토콜을 상속받으면 프로토콜에서 정의한 함수를 무조건 만들어야 한다.
class EditViewController: UIViewController {
var isOn = false
@IBOutlet weak var swOnBtn: UISwitch!
var delegate : EditDelegate?
//수정화면의 텍스트 필드
@IBOutlet weak var txMessage: UITextField!
var textWayValue: String = ""
//수정화면에서 직접 텍스트 필드를 제어할 수 없기 때문에 변수 선언
var textMessage: String = ""
//수정화면 라벨
@IBOutlet weak var lbWay: UILabel!
//view 화면
override func viewDidLoad() {
super.viewDidLoad()
//수정화면의 라벨
lbWay.text = textWayValue
//수정화면의 텍스트 필드
txMessage.text = textMessage
swOnBtn.isOn = isOn
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
//수정화면에서 완료 버튼을 눌렀을 때
@IBAction func btnDone(_ sender: UIButton) {
// didmessageedit함수 호출하면 수정화면의 텍스트 필드 내용을 메인화면으로 전달
if delegate != nil {
delegate?.didMessageEditDone(self, message: txMessage.text!)
delegate?.didImageOnOff(self, isOn: isOn)
}
//세그웨이를 추가할 때는 show이고 되돌아 갈때는 pop의 형태로 해야 한다.
_ = navigationController?.popViewController(animated: true)
}
//전구 켜고 끄기
@IBAction func swImageOnOff(_ sender: UISwitch) {
if sender.isOn {
isOn = true
}else {
isOn = false
}
}
/*
// 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 뽀개기 > ios앱' 카테고리의 다른 글
16 ios 스위프트 오디오&녹음 어플 구현 (7) | 2017.11.28 |
---|---|
15 ios 스위프트 아주 간단한 todo 어플 만들기 (0) | 2017.11.27 |
13 ios 스위프트 tapview (0) | 2017.11.23 |
12 ios 스위프트 pageControl (0) | 2017.11.23 |
11 mapview (0) | 2017.11.22 |
댓글