ViewController 생명 주기
import UIKit
class ViewController: UIViewController {
lazy var nextViewButton: UIButton = {
let button = UIButton()
button.setTitle("페이지 이동", for: .normal)
button.addTarget(self, action: #selector(buttonTapped), for: .touchUpInside)
button.backgroundColor = .systemBlue
button.setTitleColor(.white, for: .normal)
button.titleLabel?.font = .boldSystemFont(ofSize: 30)
button.translatesAutoresizingMaskIntoConstraints = false
return button
}()
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view.
print("viewDidLoad")
configurationUI()
}
override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated)
print("viewWillAppear")
}
override func viewIsAppearing(_ animated: Bool) {
super.viewIsAppearing(animated)
print("viewIsAppearing")
}
override func viewDidAppear(_ animated: Bool) {
super.viewDidAppear(animated)
print("viewDidAppear")
}
override func viewWillDisappear(_ animated: Bool) {
super.viewWillDisappear(animated)
print("viewWillDisappear")
}
override func viewDidDisappear(_ animated: Bool) {
super.viewDidDisappear(animated)
print("viewDidDisappear")
}
private func configurationUI() {
view.backgroundColor = .white
view.addSubview(nextViewButton)
NSLayoutConstraint.activate([
nextViewButton.widthAnchor.constraint(equalToConstant: 200),
nextViewButton.heightAnchor.constraint(equalToConstant: 120),
nextViewButton.centerXAnchor.constraint(equalTo: view.centerXAnchor),
nextViewButton.centerYAnchor.constraint(equalTo: view.centerYAnchor)
])
}
@objc
private func buttonTapped() {
self.navigationController?.pushViewController(SecondViewController(), animated: true)
print("======== 화면 전환 ========")
}
}
다음 화면 전환
화면전환 후 다시 되돌아갔을 때
The Role of View Controllers
뷰 컨트롤러
UI 관리 / 데이터와의 상호작용 / UI 전환
View Management
View Controller의 가장 중요한 역할은 뷰 계층을 관리하고 있고 뷰 컨트롤러에는 모든 컨텐츠를 가지고 있는 Root View가 있고 해당 루트에는 컨텐츠를 표시하는데 필요한 뷰들이 있습니다
뷰 컨트롤러는 항상 루트 뷰 참조를 유지하고 있고 각각의 뷰는 그 아래 SubView에 대한 참조를 유지하고 있습니다
"일반적으로 outlet을 사용하는데 이 oulet은 스토리보드로부터 뷰가 로드될 때 자동으로 뷰에 연결이 일반적"
스토리보드에서 뷰가 로드될 때 실제로 뷰 객체에 자동으로 연결되어있음
뷰 컨트롤러는 다른 컨트롤러의 컨텐츠를 관리할 수 있음
Data Marshaling
뷰 컨트롤러는 뷰와 데이터간의 중재자 역할을 하고 있고
UIViewController를 상속하고 데이터를 관리하는 변수를 설정하는 것으로 데이터를 관리합니다
뷰 컨트롤러와 데이터 객체 내에서는 항상 명확하게 분리하여 사용해야합니다
UIDocument는 뷰 컨트롤러와 별도로 데이터를 관리하는 방법이 있습니다
문서 객체는 데이터를 읽고 쓰는 방법을 아는 컨트롤러 객체입니다
UIDocument
앱의 데이터를 관리한느 추상 클래스로 Document를 사용해서 얻을 수 있는 이점이 있습니다
백그라운드 큐에서 비동기적으로 데이터를 읽/쓰기 가능
Document 파일의 읽/쓰기가 클라우드 서비스에 자동으로 결합
다른 버전의 Document 충돌 감지 지원
임시 파일에 먼저 저장하고 이후 실제 파일을 대체함으로 안전한 저장 가능
자동 저장 가능
'UIKit' 카테고리의 다른 글
iOS | GCD에 관하여 - 2 (4) | 2024.07.16 |
---|---|
iOS | GCD에 관하여 - 1 (0) | 2024.07.15 |
UIKit | UITableView에 관하여 (0) | 2024.07.03 |
UIKit | UIView 어떤식으로 동작되고 있는가? (0) | 2024.07.02 |
UIKit | 스토리보드 없이 코드로만 구현하고 싶다면? -1 (2) | 2024.07.01 |