import UIKit
class ViewController: UIViewController, EditDelegate{
func didMessageEditDone(message: String) {
self.message = message
textField.text = self.message
}
func didLampSwitchToggled(isOn: Bool) {
if isOn {
imageView.image = lampOnImage
isSwitchOn = isOn
}else{
imageView.image = lmapOffImage
isSwitchOn = isOn
}
}
let lampOnImage = UIImage(named: "lamp_on")
let lmapOffImage = UIImage(named: "lamp_off")
var isSwitchOn = true
var message = ""
@IBOutlet var imageView: UIImageView!
@IBOutlet var textField: UITextField!
override func viewDidLoad(){
super.viewDidLoad()
imageView.image = lampOnImage
}
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
let editViewController = segue.destination as! EditViewController
if segue.identifier == "barButtonSegue"{
editViewController.labelText = "bar Button Segue"
editViewController.textField?.text? = textField.text!
editViewController.isSwitchOn = self.isSwitchOn
editViewController.delegate = self
}else if segue.identifier == "buttonSegue"{
editViewController.labelText = "button Segue"
editViewController.textField?.text? = textField.text!
editViewController.isSwitchOn = self.isSwitchOn
editViewController.delegate = self
}
}
}
import UIKit
protocol EditDelegate{
func didMessageEditDone(message: String)
func didLampSwitchToggled(isOn: Bool)
}
class EditViewController: UIViewController {
var isSwitchOn = true
var labelText = ""
var delegate: EditDelegate?
@IBOutlet var segueLabel: UILabel!
@IBOutlet var switchLabel: UILabel!
@IBOutlet var textField: UITextField!
@IBOutlet var switchValue: UISwitch!
override func viewDidLoad() {
super.viewDidLoad()
segueLabel.text = labelText
switchValue.isOn = isSwitchOn
// Do any additional setup after loading the view.
}
@IBAction func onOffSwitch(_ sender: UISwitch) {
isSwitchOn = switchValue.isOn
}
@IBAction func touchUpDoneButton(_ sender: UIButton) {
if delegate != nil{
delegate?.didMessageEditDone(message: textField.text!)
delegate?.didLampSwitchToggled(isOn: isSwitchOn)
}
navigationController?.popViewController(animated: true)
}
}
viewDidLoad()
함수가 호출되며, prepare
함수로 데이터를 전달할 수 있다.navigationController?.popViewController(animated: true)
함수를 활용할 수 있다.