์๋ ํ์ธ์ Foma ์ ๋๋ค!
์ ๋ฒ ์๊ฐ์ ์ฑ ์๋ช ์ฃผ๊ธฐ์ ๋ํด์ ๋ค๋ฃฌ ์ ์ด ์๋๋ฐ์. (ํน์ ์๋ณด์ ๋ถ๋ค์ ์ฌ๊ธฐ ์์ ๋ณด์๋ฉด ๋ฉ๋๋ค!)
์ค๋์ ๋ทฐ์ปจํธ๋กค๋ฌ ์๋ช ์ฃผ๊ธฐ์ ๋ํด์ ๋ค๋ค๋ณด๋๋ก ํ๊ฒ ์ต๋๋ค.
๋ฐ๋ก ์์ํ ๊ฒ์~
ViewController Life Cycle
๋ทฐ์ปจํธ๋กค๋ฌ์ ์๋ช ์ฃผ๊ธฐ๋ ์๋์ ๊ฐ์ด 6๋จ๊ณ๋ก ์ด๋ฃจ์ด์ ธ ์์ต๋๋ค.
๊ฐ ๋ฌด์์ ๋ปํ๋์ง ์์๋ณด๊ธฐ ์ ์ ํ๋ฒ ์ด๋ป๊ฒ ์คํ๋๋์ง ๋ด๋ณผ๊น์?
ViewController
๋จผ์ ์ฒซ๋ฒ์งธ ๋ทฐ์ปจํธ๋กค๋ฌ์์ ๊ฐ ๋ฉ์๋๋ง๋ค ์ถ๋ ฅ์ ํ๊ฒ๋ ๋ง๋ค์ด๋๊ฒ ์ต๋๋ค.
import UIKit
class ViewController: UIViewController {
override func loadView() {
super.loadView()
print("๋ทฐ ๋ก๋์ค~")
}
override func viewDidLoad() {
super.viewDidLoad()
print("๋ทฐ ๋ก๋ ๋์์ด์~")
}
override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(true)
print("๋ทฐ ์ด์ ๊ณง ๋ณด์ผ๊ฑฐ์์~")
}
override func viewDidAppear(_ animated: Bool) {
super.viewDidAppear(true)
print("๋ทฐ ๋ํ๋ฌ์ด์~")
}
override func viewWillDisappear(_ animated: Bool) {
super.viewWillDisappear(true)
print("๋ทฐ ์ด์ ๊ณง ์ฌ๋ผ์ง๊ฑฐ์์~")
}
override func viewDidDisappear(_ animated: Bool) {
super.viewDidDisappear(true)
print("๋ทฐ ์ฌ๋ผ์ก์ด์~")
}
}
NewViewController
๋ค์์ผ๋ก ์ด๋๋ ๋ทฐ์ปจํธ๋กค๋ฌ๋ ๋๊ฐ์ด ํด๋์๊ฒ์!
import UIKit
class NewViewController: UIViewController {
override func loadView() {
super.loadView()
print("์๋ก์ด ๋ทฐ ๋ก๋์ค~")
}
override func viewDidLoad() {
super.viewDidLoad()
print("์๋ก์ด ๋ทฐ ๋ก๋ ๋์์ด์~")
}
override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(true)
print("์๋ก์ด ๋ทฐ ์ด์ ๊ณง ๋ณด์ผ๊ฑฐ์์~")
}
override func viewDidAppear(_ animated: Bool) {
super.viewDidAppear(true)
print("์๋ก์ด ๋ทฐ ๋ํ๋ฌ์ด์~")
}
override func viewWillDisappear(_ animated: Bool) {
super.viewWillDisappear(true)
print("์๋ก์ด ๋ทฐ ์ด์ ๊ณง ์ฌ๋ผ์ง๊ฑฐ์์~")
}
override func viewDidDisappear(_ animated: Bool) {
super.viewDidDisappear(true)
print("์๋ก์ด ๋ทฐ ์ฌ๋ผ์ก์ด์~")
}
}
Storyboard
์คํ ๋ฆฌ๋ณด๋์์ ์ฒซ๋ฒ์งธ ๋ทฐ์ปจํธ๋กค๋ฌ์ ๋ค๋น๊ฒ์ด์ ์ปจํธ๋กค๋ฌ๋ฅผ ์๋ฒ ๋ํ๊ณ ๋ฒํผ์ ๋๋ฅด๋ฉด ๋ด๋ทฐ์ปจํธ๋กค๋ฌ๋ก ํธ์ฌํ๋๋ก ํ๊ฒ ์ต๋๋ค.
์ด๋ ๊ฒ ๋ณด๋ ์ ์์๊ณผ๋ ์กฐ๊ธ ๋ค๋ฅด๊ฒ ๋์์ด์.
์ ๋ ๋ทฐ์ปจํธ๋กค๋ฌ์ ๋ทฐ๊ฐ ๋ค ์ฌ๋ผ์ง ๋ค์ ์๋ก์ด ๋ทฐ์ปจํธ๋กค๋ฌ๊ฐ ๋์ฌ๊ฑฐ๋ผ๊ณ ์์ํ์ง๋ง
์๋์ ๊ฐ์ด ์๋ก์ด ๋ทฐ๊ฐ ๋ก๋๋๊ณ ๋ก๋ ๋๋ค ๋ทฐ๊ฐ ์ด์ viewWillDisappear์ด ์คํ๋๊ณ
์๋ก์ด๋ทฐ๊ฐ ์ด์ ๋ณด์ด๋ ค๊ณ ํ ๋ viewDidDisappear์ด ์คํ๋๋ค์!
๊ทธ๋ฌ๋ฉด ์ด์ ๋ถํฐ ํ๋ํ๋ ๊ตฌ์ฒด์ ์ผ๋ก ์์๋ณผ๊น์?
LoadView
- ์ปจํธ๋กค๋ฌ๊ฐ ๊ด๋ฆฌํ๋ ๋ทฐ๋ฅผ ๋ง๋ ๋ค.
- ๋ทฐ ์ปจํธ๋กค๋ฌ์ ์ฐ๊ฒฐ๋ nib ํ์ผ์ด ์๋ ๊ฒฝ์ฐ ์ด ๋ฉ์๋๋ Nib ํ์ผ์์ ๋ทฐ๋ฅผ ๋ก๋ํ๋ค.
- ์ด ๋ฉ์๋๋ ์ง์ ์ ์ผ๋ก ํธ์ถํ๋ฉด ์๋๋ค.
ViewDidLoad
์ฐ๋ฆฌ๊ฐ ๊ฐ์ฅ ํํ๊ฒ ๋ณผ ์ ์๋ ๋ฉ์๋์ฃ .
- ๋ทฐ ์ปจํธ๋กค๋ฌ๊ฐ ๋ทฐ ๊ณ์ธต ๊ตฌ์กฐ๋ฅผ ๋ฉ๋ชจ๋ฆฌ์ ๋ก๋ํ ํ์ ํธ์ถ๋๋ค.
- ๋ทฐ๊ฐ nib์์ ๋ก๋๋๋ ํ๋ก๊ทธ๋๋ฐ์ผ๋ก ์์ฑ๋๋ ์๊ด์์ด ํธ์ถ๋๋ค.
ViewWillAppear
- ๋ทฐ๊ฐ ๋ทฐ ๊ณ์ธต ๊ตฌ์กฐ์ ์ถ๊ฐ๋๊ธฐ ์ ๊ณผ ๋ทฐ๋ฅผ ํ์ํ๊ธฐ ์ํ ์ ๋๋ฉ์ด์ ์ด ๊ตฌ์ฑ๋๊ธฐ ์ ์ ํธ์ถ๋๋ค.
- ์๋ฅผ ๋ค๋ฉด ์ํ๋ฐ๋ ํ๋ฉด๋ฐฉํฅ์ ์ ํ ๋ ์ฌ์ฉํ ์ ์๋ค.
ViewDidAppear
- ๋ทฐ๊ฐ ๋ทฐ ๊ณ์ธต๊ตฌ์กฐ์ ์ถ๊ฐ๋์์์ ์๋ฆฐ๋ค.
ViewWillDisappear
- ๋ทฐ๊ฐ ๋ทฐ ๊ณ์ธต๊ตฌ์กฐ์์ ์ฌ๋ผ์ง ๊ฒ์์ ์๋ฆฐ๋ค.
- ์๋ฅผ ๋ค๋ฉด ์ํ๋ฐ๋ ๋ฐฉํฅ์ ๋๋๋ฆด๋ ์ฌ์ฉํ ์ ์๋ค.
ViewDidDisappear
- ๋ทฐ๊ฐ ๋ทฐ ๊ณ์ธต ๊ตฌ์กฐ์์ ์ ๊ฑฐ๋์์์ ๋ทฐ ์ปจํธ๋กค๋ฌ์๊ฒ ์๋ฆฐ๋ค.
- ์ด ๋ฉ์๋๋ฅผ ์ฌ์ ์ํ์ฌ ๋ซ๊ธฐ ๋๋ ์จ๊ธฐ๊ธฐ์ ๊ฐ์ ์ถ๊ฐ ์์ ์ ์ํํ ์ ์๋ค.
์ด๋ ๊ฒ 6๋จ๊ณ์ ๋ทฐ ์๋ช ์ฃผ๊ธฐ์ ๋ํด์ ๊ตฌ์ฒด์ ์ผ๋ก ์์๋ณด์๋๋ฐ์.
์ ์ด ์์๋๋ก ์ถ๋ ฅ๋ ๊ฑธ๊น์?๐ค
์ ์๊ฐ์ ์ฌ๋ผ์ง ๋ทฐ๋ณด๋ค ์๋กญ๊ฒ ์๊ธธ ๋ทฐ๋ฅผ ์ค๋นํ๋ ๊ฒ์ ๋ ์ค์์ ์๊ฐํ๋ ๊ฒ ๊ฐ์์.
์๋ ๋ทฐ๊ฐ ๋ค์ ๋ทฐ๋ก ์ด๋ํ๋ ค๊ณ ํ๋ฉด ๋จผ์ ์๋ก์ด ๋ทฐ๋ฅผ ๋ก๋ํ๊ณ ๋ก๋๊ฐ ๋๋ฌ๋ค๋ฉด ๋ทฐ๊ฐ ์ด์ ์ฌ๋ผ์ง๊ฑฐ๋ผ๊ณ ์๋ฆผ์ ๋ณด๋ด๋ ๊ฒ์ด์ฃ .
๊ทธ๋ฆฌ๊ณค ๋ทฐ๊ฐ ์ด์ ์ฌ๋ผ์ง๊ฑฐ๋ผ๊ณ ํ์คํ ์๋ฆผ์ด ์๋ค๋ฉด ๋ทฐ๊ฐ ๋ณด์ผ ์ค๋น๋ฅผ ํ๋ผ๊ณ ์๋ ค์ฃผ๋ ๊ฒ์ด์ฃ .
๊ทธ๋ฌ๋ฉด ๋ทฐ๋ ์ด์ ๋ณด์ผ ์ค๋น๋ฅผ ํ๊ณ ์ค๋น๊ฐ ๋๋ค๋ฉด ์ด์ ๋ทฐ๊ฐ ์ฌ๋ผ์ง ๋ค ์๋ก์ด ๋ทฐ๊ฐ ๋ํ๋๋ ๊ฒ์ด์ฃ !
์์์ ๊ฐ ๋ฉ์๋๋ฅผ ์ค๋ช ํ ๋
ํต์ฌ์ ๋ทฐ ๊ณ์ธต๊ตฌ์กฐ์ ์ถ๊ฐ๋๋์ง ์ ๊ฑฐ๋๋์ง์ธ๊ฑฐ ๊ฐ์์.
๊ทธ๋ ๋ค๋ฉด ๋ทฐ ๊ณ์ธต๊ตฌ์กฐ์ ์ด๋ป๊ฒ ์ถ๊ฐ๋๊ณ ์ ๊ฑฐ๋๋ ๊ฒ์ผ๊น์?๐ง
View Hierachy
๋ทฐ ๊ณ์ธต๊ตฌ์กฐ๋ฅผ ์์ด๋ก ๋ทฐ ํ๋ผ์น๋ผ๊ณ ํฉ๋๋ค.
๋ทฐ์ปจํธ๋กค๋ฌ์ ์๋ ๋ฒํผ์ ๋๋ฅด๋ฉด ํ๋ผ์น ๋ชจ๋๋ก ๋ณผ ์ ์๋๋ฐ์.
์๋์ ๊ฐ์ด ๋ทฐ๋ ์ถ๊ฐ๋๊ณ ์ ๊ฑฐ๋ฉ๋๋ค.
๊ณ ๋ก ๋ทฐ ๊ณ์ธต๊ตฌ์กฐ๋ ๋ค์๊ณผ ๊ฐ์ด ์๋กญ๊ฒ ๋ทฐ์ปจํธ๋กค๋ฌ๋ก ์ด๋ํ ๋ ์์ด๊ณ ์ ๊ฑฐ๋๋๋ฐ
๊ทธ๊ฒ์ ์๋ ค์ฃผ๋ ๊ฒ์ด ๋ทฐ ์๋ช ์ฃผ๊ธฐ๋ผ๊ณ ๋ณผ ์ ์์ต๋๋ค.
๋๊ธ