Segue를 이용해 push로 연결한 ViewController로 전광판 만들기 실습을 따라해 봄
delegate를 이용해 프로토콜을 채택하여 pop을 할때 데이터를 전달하는 방법에 대해 배울 수 있었고,
(segue로 연결하였을 경우)prepare 메서드를 이용해 데이터를 전달하는 방법에 대해 배울 수 있었다.
Segue가 수행될 것임을 뷰 컨트롤러에 알린다고 정의 되어 있다.
첫번째 파라미터는 segue에 관련된 ViewController에 대한 정보를 포함한 segue 개체임
두번째 파라미터는 segue를 시작하는 개체임
segue는 여러 소스에서 트리거될 수 있으므로 segue및 sender매개변수의 정보를 사용하여 앱의 서로 다른 논리적 경로를 명확하게 구분할 수 있음
//
// OLEDViewController.swift
// LEDBoard
//
// Created by duck on 2022/10/04.
//
import UIKit
class OLEDViewController: UIViewController, SettingOLEDOption{
func settingOptionsOLED(text: String?, oledTextColor: UIColor, bgColor: UIColor) {
self.ledText.textColor = oledTextColor
self.view.backgroundColor = bgColor
self.ledText.text = text
}
@IBOutlet weak var ledText: UILabel!
override func viewDidLoad() {
super.viewDidLoad()
self.ledText.textColor = .orange
}
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
if let viewController = segue.destination as? OLEDSettingViewController{
viewController.delegate = self
viewController.ledText = self.ledText.text
viewController.oledTextColor = self.ledText.textColor
viewController.bgColor = self.view.backgroundColor ?? .black
}
}
}
//
// OLEDSettingViewController.swift
// LEDBoard
//
// Created by duck on 2022/10/04.
//
import UIKit
protocol SettingOLEDOption: AnyObject{
func settingOptionsOLED(text: String?, oledTextColor: UIColor, bgColor: UIColor)
}
class OLEDSettingViewController: UIViewController {
//MARK: - IBOutlet
@IBOutlet weak var textField: UITextField!
@IBOutlet weak var blackTextColor: UIButton!
@IBOutlet weak var blueTextColor: UIButton!
@IBOutlet weak var greenTextColor: UIButton!
@IBOutlet weak var orangeBGColor: UIButton!
@IBOutlet weak var purpleBGColor: UIButton!
@IBOutlet weak var yellowBGColor: UIButton!
var ledText: String?
var oledTextColor: UIColor = .orange
var bgColor: UIColor = . black
var delegate: SettingOLEDOption?
private func configure(){
if let ledText = ledText {
self.textField.text = ledText
}
self.textColorAlpha(color: self.oledTextColor)
self.bgColorAlpha(color: self.bgColor)
}
override func viewDidLoad() {
super.viewDidLoad()
self.configure()
}
@IBAction func bGColor(_ sender: UIButton) {
if sender == orangeBGColor{
bgColorAlpha(color: .orange)
self.bgColor = .orange
}else if sender == purpleBGColor{
bgColorAlpha(color: .purple)
self.bgColor = .purple
}else if sender == yellowBGColor{
bgColorAlpha(color: .yellow)
self.bgColor = .yellow
}
}
@IBAction func textColor(_ sender: UIButton) {
if sender == blackTextColor{
textColorAlpha(color: .black)
self.oledTextColor = .black
}else if sender == blueTextColor{
textColorAlpha(color: .blue)
self.oledTextColor = .blue
}else if sender == greenTextColor{
textColorAlpha(color: .green)
self.oledTextColor = .green
}
}
@IBAction func settingCompleteButton(_ sender: UIButton) {
self.delegate?.settingOptionsOLED(text: self.textField.text, oledTextColor: self.oledTextColor, bgColor: self.bgColor)
self.navigationController?.popViewController(animated: true)
}
private func textColorAlpha(color: UIColor){
self.blackTextColor.alpha = color == UIColor.black ? 1.0 : 0.2
self.blueTextColor.alpha = color == UIColor.blue ? 1.0 : 0.2
self.greenTextColor.alpha = color == UIColor.green ? 1.0 : 0.2
}
private func bgColorAlpha(color: UIColor){
self.orangeBGColor.alpha = color == UIColor.orange ? 1.0 : 0.2
self.purpleBGColor.alpha = color == UIColor.purple ? 1.0 : 0.2
self.yellowBGColor.alpha = color == UIColor.yellow ? 1.0 : 0.2
}
}
'프로젝트 만들어보기' 카테고리의 다른 글
[iOS] TodoList 만들기 2/3 (UserDefaults/didSelectRowAt) (2) | 2022.10.11 |
---|---|
[iOS] TodoList 만들기 1/3 (UIAlertController) (2) | 2022.10.09 |
[iOS] 계산기 만들어보기 (Swift) (2) | 2022.10.06 |
[Swift] 명언생성기 (iOS) (0) | 2022.09.27 |
[Weather App] 날씨 앱 만들어보기 (SwiftUI) (0) | 2022.08.24 |