BaseViewController
์ฌ์ค ์ด์ ์๋ BaseViewController๋ฅผ ๋ง๋ค์ด์ ์๋ธํด๋์ฑํ๋ ์์ ์ ํด์์๋๋ฐ ์ด๋ ์๊ฐ ํ๋กํ ์ฝ์ ์ฐ๋ ๊ฒ ์ข๋ค๋ ์ฃผ๋ณ ๋ง์ด ๋ง์ด ๋ค๋ ธ๋ค. ๊ทธ๋์ ๊ทธ๋ฐ๊ฐ๋ผ๋ ์๊ฐ์ ๋๋ ๋ฉ๋ฌ์ ํ์๋๋ฐ, ์์์ ํ๋ ๊ตฌ์กฐ๊ฐ ๋ฌด์์ ๋์๋ค๋ ์๊ฐ์ ํ๋ ๊ฒ์ด ์คํ๋ ค ์๋ชป๋์ง ์์๋๋ผ๋ ์๊ฐ์ด ๋ค์๋ค. ์ด์ฐจํผ ์์์ ํ๋์ ํด๋์ค๋ง ํ ์ ์๊ณ , ๋ชจ๋ ์ปจํธ๋กค๋ฌ์์ ๊ณตํต์ ์ผ๋ก ์ฐ์ฌ์ผ ํ๋ ๋ด์ฉ์ด๋ผ๋ฉด ํ๋์ BaseViewController๋ก ์์๋ฐ์ ์ฌ์ฉํ๋ ๊ฒ์ด ๋ ๋ซ์ง ์๋ ์๊ฐ์ด ๋ ๋ค. ๊ฐ์ธ์ ์ผ๋ก ๊ทธ ์ธ์ ์ธ ๊ฒ๋ค์ ํ๋กํ ์ฝ๋ก ๊ด๋ฆฌํ๋ ๊ฒ์ด ๋ ๋ง๋ ๊ฒ ๊ฐ๋ค. ์์๊ณผ ํฉ์ฑ์ ์ ์ ํ ์ฌ์ฉํ๋ ๊ฒ์ด ๊ฐ์ฅ ์ ์ ํ ๊ฒ ๊ฐ์๋ฐ ๊ทธ ์ ๋๋ฅผ ์ฐพ๊ธฐ๊ฐ ์ ๋ง ์ด๋ ค์ด ๊ฒ ๊ฐ๋ค.
BaseView
- View๋ฅผ ๋ง๋ค ๋์ ๊ณตํต์ ์ผ๋ก ๋ค์ด๊ฐ๋ ์์ ์ ๋ชจ์๋๊ณ ์์๋ฐ์ ์ฌ์ฉํ๋ ์์ด๋์ด
- ๋ทฐ ๊ฐ์ฒด๋ฅผ ์ ์ธํ๊ณ ๋ฑ๋กํ๋ ์์ ์ BaseView๋ฅผ ์์๋ฐ์ ์๋ธํด๋์ค์์ ์งํ
class BaseView: UIView {
override init(frame: CGRect) {
super.init(frame: frame)
configureUI()
setConstraints()
}
@available(*, unavailable)
required init?(coder: NSCoder) {
fatalError("init(coder:) has not been implemented") // ๋ฐํ์ ์ค๋ฅ
}
func configureUI() {}
func setConstraints() {}
}
LoadView
์ฝ๋ ๋ฒ ์ด์ค๋ก ์์ ์ ํ ๊ฒฝ์ฐ Controller์ ์ญํ , ๋ถ๋ด์ ์ข ๋ ๋์ด์ฃผ๊ธฐ ์ํด UI ๊ฐ์ฒด๋ฅผ ํ ๋ฒ ๋ ๋์ด๋ด๋ ์์ ์ ์ํํ๋ค. ๊ฐ๋จํ๊ฒ ๋งํด์ RootView๋ฅผ ๊ต์ฒดํด์ฃผ๋ ์์ ์ ํด์ฃผ๋ ๊ฒ์ธ๋ฐ RootView๋ฅผ ๊ฐ์ ๋ผ์์ฃผ๋ ์์ ์ LoadView ๋ฉ์๋์์ ์ํํ๋ค.
- UIViewController์ ์ธ์คํด์ค ๋ฉ์๋
- viewDidLoad์ ์ ํธ์ถ
- ์๋๋ ViewController๊ฐ ๊ฐ์ง๊ณ ์๋ View๋ ๊ธฐ๋ณธ์ ์ผ๋ก nil ๊ฐ์ด๋ค.
- loadView์์ View๋ฅผ ์ฑ์์ฃผ๋ ์์ ์ ํ๋ค. ์คํ ๋ฆฌ๋ณด๋์ ๊ฒฝ์ฐ๋ ์๋์ผ๋ก loadView๋ฅผ ํธ์ถํ๊ณ , View๋ฅผ ๊ฐ์ง๊ณ ์์ ๋ผ์์ค๋ค.
- super.loadView()์ ํธ์ถ์ ํ์ง๋ง์์ผ ํ๋ค.
override func loadView() {
print(self.view!) // ์ ๊ธฐํ๋ค.. ์ฌ๊ธฐ์ print์ฐ์ผ๋ฉด ํธ์ถ์ด ์ ๋จ
self.view = WriteView()
// print(self.view)
}
self.view์ view๋ฅผ ํ ๋นํ์ง ์๊ณ , self.view๋ฅผ ํธ์ถํ๋ฉด loadView ๋ฉ์๋๊ฐ ๋ฌดํ ํธ์ถ๋๋ค.
Notification
- ์ ํธ๋ฅผ ์๋ ์ชฝ, ์ ํธ๋ฅผ ๋ฐ๋ ์ชฝ์ผ๋ก ๊ตฌ๋ถํด์ ์๊ฐ
- ์ ํ๋ฒ์ ๊ตฌ๋ ์์ ๊ด๊ณ๋ก ์๊ฐํด๋ ์ข๋ค.
- ์ํ๋ value๋ userInfo(๋์ ๋๋ฆฌ)๋ก ์ ๋ฌํ ์ ์๋ค.
- ์ ๋ฐฉํฅ ์์ ์๋ ๋ ธํฐ๊ฐ ์ ์ ๋์ํ์ง ์๋๋ค. (๋ฉ๋ชจ๋ฆฌ์ ์ฌ๋ผ๊ฐ ์์ง ์์ ์ธ์คํด์ค์ ์ ํธ๋ฅผ ์๊ธฐ ๋๋ฌธ)
- ๊ณ์ธต์ ์๊ด์์ด ์ ํธ๋ฅผ ์ ๋ฌ ๊ฐ๋ฅํ๋ค๋ ์ฅ์ ์ด ์๋ค.
NotificationCenter.default.post(
name: Notification.Name("Post"),
object: nil,
userInfo: ["name": nameTextField.text!, "value": 123456]
)
NotificationCenter.default.addObserver(
self,
selector: #selector(action),
name: Notification.Name("Post"),
object: nil
)
@objc func action(_ notification: NSNotification) {
if let name = notification.userInfo?["name"] as? String {
self.nameButton.setTitle(name, for: .normal)
}
}
'๐ฑ SeSAC' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Diary App: DDAK] ์ค๊ฐ ๊ธฐ๋ก (1) (0) | 2022.08.28 |
---|---|
[Diary App: DDAK] ๊ธฐ๋ก์ ์์ (0) (5) | 2022.08.23 |
[SeSAC] 220818 TIL (0) | 2022.08.20 |
[SeSAC] 220817 TIL (0) | 2022.08.20 |
[SeSAC] 220816 TIL (0) | 2022.08.16 |