1. 새프로젝트를 만들어서 ViewController에는 Label과 button 추가
SecondViewController에는 TextField와 button 추가
Cocoa Touch Class로 SecondViewController파일 추가
identyfier inspector에서 SecondViewController
2. ViewController에 Label은 Outlet을 연결해주고, Button은 Action을 연결해줌
Touch up inside하였을 경울 SeconViewController가 fullscreen으로 창이 뜨도록 함
SecondViewController에 TextField는 Outlet으로 button은 present한 창을 dismiss할 수 있도록 Action으로 구현
3.ViewController에 프로토콜 ChangedLabeldDelegate 생성해 주고
protocol ChangedLabelDelegate{
func doChange()
}
4.SecondViewController에서 PreviousViewController 생성
var previousViewController :ViewController?
5.ViewController에서 버튼을 눌렀을때 previousViewController가 자신이라는것을 명시해줌
goSecondVC.previousViewController = self
6.SecondViewController에 ChangedLabelDelegate를 위임받도록 추가
class SecondViewController: UIViewController,ChangedLabelDelegate {
}
7.previousController에 있는 textLabel의 text를 textField의 text로 바꿔줌
previousViewController?.textLabel.text = self.textField.text
8.previousViewController에 있는 delegate가 위임받겠다고 추가
previousViewController?.delegate = self
9.SecondViewController에 bakButton을 눌렀을때 doChage함수 호출
@IBAction func backButton(_ sender: Any) {
doChange()
}
//ViewController
import UIKit
protocol ChangedLabelDelegate{
func doChange()
}
class ViewController: UIViewController {
@IBOutlet weak var textLabel: UILabel!
@IBAction func didTapGoSecondVC(_ sender: Any) {
guard let goSecondVC = storyboard?.instantiateViewController(withIdentifier: "SecondViewController") as? SecondViewController else {
return
}
goSecondVC.previousViewController = self // previousViewController가 자신이라는 것을 알게 해줘야함
goSecondVC.modalPresentationStyle = .fullScreen
self.present(goSecondVC, animated: true, completion: nil)
}
var delegate : ChangedLabelDelegate?
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view.
}
}
//SecondViewController
import UIKit
class SecondViewController: UIViewController,ChangedLabelDelegate {
func doChange() {
previousViewController?.textLabel.text = self.textField.text
}//previousController에 있는 textLabel의 text를 textField의 text로 바꿔줌
var previousViewController :ViewController? //전에 있던 뷰가 어떤것인지 알기 위해서
override func viewDidLoad() {
super.viewDidLoad()
previousViewController?.delegate = self
// Do any additional setup after loading the view.
}
@IBOutlet weak var textField: UITextField!
@IBAction func backButton(_ sender: Any) {
doChange()
dismiss(animated: true, completion: nil)
}
}
'Swift랑 친해지기' 카테고리의 다른 글
서버란? (Swift) (0) | 2022.09.05 |
---|---|
[iOS] 간단히 프로토콜 이해하기 (Swift) (1) | 2022.08.30 |
Swift 특징(프로토콜 지향언어, ArrayList, DataSource, Delegate) (0) | 2022.08.29 |
[Xcode] App store 프로젝트 업데이트 올리기 (0) | 2022.07.12 |
[iOS] Xcode로 앱스토어 등록 배포하기 (0) | 2022.07.07 |