ํ๋ฉด ์ ํ์์ ํท๊ฐ๋ฆด๋งํ ์ง์
- ๋ค๋น๊ฒ์ด์ ์คํ ๊ด๋ฆฌ (์ฝ๋๋ก ํ๋ฉด ์ ํ์ ๊ตฌํํ ๋ ๋์น๊ธฐ ์ฝ๋ค.)
- ๋ค๋น๊ฒ์ด์ ์คํ์ผ๋ก ๊ด๋ฆฌ๋๋ค๊ฐ ์ค๊ฐ์ Present๋ ๋ชจ๋ฌ์ด ๋์ค๋ฉด ์คํ์ด ๋๊ธฐ๊ฒ ๋๋ค.
- ์ค๊ฐ์ ์๋กญ๊ฒ ๋ค๋น๊ฒ์ด์ ์ปจํธ๋กค๋ฌ๋ฅผ embedํด์ ์ ํ์ ์ด์ด๋๊ฐ ์ ์๊ณ , ์ด ์์ ๋ถํฐ๋ ์๋ก์ด ๋ค๋น๊ฒ์ด์ ์คํ์ด ์๊ธฐ๊ฒ ๋๋ค.
- ์์์ ์ ์ค์์ฑ (ํญ๋ฐ ์ปจํธ๋กค๋ฌ, ๋ค๋น๊ฒ์ด์ ์ปจํธ๋กค๋ฌ)
- ์คํ ๋ฆฌ๋ณด๋์ ๋ค๋น๊ฒ์ด์ ์ปจํธ๋กค๋ฌ๋ฅผ embed ํด๋๋๋ผ๋ ์ธ์คํด์ค๋ฅผ ๊ฐ์ ธ์ฌ ๋ ์ฃผ์ํ์ง ์์ผ๋ฉด ์ํ๋ ๊ตฌํ์ ํ ์ ์๋ค.
ํ๋ฉด ์ ํํ๋ฉด์ ๊ฐ ์ ๋ฌ
- ์ ๋ฌ ๋ฐ์ ํ๋ฉด์ ๊ณต๊ฐ ๋ง๋ค๊ธฐ
- ๋ฐ์ดํฐ ์ ๋ฌํ๊ธฐ
- ๋ฐ์ ๋ฐ์ดํฐ ๊ฐ์ง๊ณ ๋ทฐ์ ํํํ๊ธฐ
- ํ๋ฉด ์ ๋ฌ ์ ์ ์ ํ๊ฒ ๋ณ์์ ๊ฐ์ ๋ด์๋ณด๋ด๊ธฐ ์ํด์๋ ๋ค์ด ์บ์คํ ์ด ํ์ํ๋ค. (์ฐ๋ฆฌ๊ฐ ViewController ์์ ๋ง๋ค์ด ๋์ ๋ณ์์ ์ ๊ทผํ๊ธฐ ์ํด์๋ ๋น์ฐํ๊ฒ๋ ํ์ ์บ์คํ ์ด ํ์ํ๊ฒ ๋๋ค.)
- ์์๋ ์ด ๋ง๋ค์ด์ง๋ ์์ ์ด ์ด๊ธฐํ๋๋ ์์ ๋ณด๋ค ๋ ๋์ค์ด๊ธฐ ๋๋ฌธ์ ๊ทธ ์ ์ ์ ๊ทผํ๋ ค๊ณ ํ๋ฉด ์๋ฌ๊ฐ ๋ฐ์ํ๋ค.
์๋ฌ ์ฒดํฌ
- UIButton์ Style์ด plain์ด๋ฉด currentTitle์ ์ ๊ทผํ ์ ์๋ค.
์ต์ ๋ ๊ฐ ์ฒดํฌ
var placeholder: String?
self.userTextField.placeholder = placeholder
self.userTextField.placeholder = "\(placeholder ?? "nil value")"
๋ฐ๋ก ๋ฐ๋ก ํ๋กํผํฐ ์์ฑํ์ง ์๊ณ , ํ๋์ ๊ตฌ์กฐ์ฒด ์ ์ฒด๋ฅผ ์ ๋ฌ ๋ฐ๋ ๊ฒ์ด ๋์ ์ด์
var movieData: Movie?
- ๋ฐ์ดํฐ ๋ณ๊ฒฝ(์ถ๊ฐ, ์ญ์ )๋ฑ์ ๋์ฒํ๊ธฐ ์ฝ๋ค.
์์ ํ๋ฉด์ ๋ณ๊ฒฝ
์ฑ์ ์ฌ์ฉํ ๋๋ง๋ค ๋ก๊ทธ์ธ/ํ์๊ฐ์ /์ธํธ๋ก ํ๋ฉด์ด ๊ณ์ํด์ ๋์จ๋ค๋ฉด ์ฌ์ฉ์ ์ ์ฅ์์ ๋ง์ด ๋ถํธํ ๊ฒ์ด๋ค. ๋ฐ๋ผ์ ์ด ๋ถ๋ถ์ ๋ํ ํด์๊ฐ ํ์ํ๋ค.
- ๋ก๊ทธ์ธ ํ๋ฉด
- ๊ธฐ์ฌ์ฉ์ : ๋ฉ์ธํ๋ฉด
- ์ต์ด ๊ฐ์ ์ : ๋ก๊ทธ์ธ/ํ์๊ฐ์ ํ๋ฉด
- toss
- ์ธํธ๋ก ํ๋ฉด
- ์จ๋ณด๋ฉ ํ๋ฉด
- ํํ ๋ฆฌ์ผ ํ๋ฉด
UIWindow
- ์๋ง์ ํ๋ฉด ์ค์์ ์ด๋ค ๊ฒ์ ์์ดํฐ ํ๋ฉด์ ๋ณด์ฌ์ค ์ง ๊ด๋ฆฌํ๋ ๊ฐ์ฒด
// ์์ ํ๋ฉด์ ์ฐ๊ฒฐํ๊ธฐ ์ ์ ํด๋น ๋ฉ์๋์์ ํต์
func scene(_ scene: UIScene, willConnectTo session: UISceneSession, options connectionOptions: UIScene.ConnectionOptions) {
guard let scene = (scene as? UIWindowScene) else { return }
self.window = UIWindow(windowScene: scene)
let sb = UIStoryboard(name: "Trend", bundle: nil)
guard let vc = sb.instantiateViewController(withIdentifier: "ViewController") as? ViewController else { return }
self.window?.rootViewController = vc
self.window?.makeKeyAndVisible()
}
์์ ํ๋ฉด ๋ถ๊ธฐ ์ฒ๋ฆฌ
func scene(_ scene: UIScene, willConnectTo session: UISceneSession, options connectionOptions: UIScene.ConnectionOptions) {
guard let scene = (scene as? UIWindowScene) else { return }
self.window = UIWindow(windowScene: scene)
UserDefaults.standard.set(false, forKey: "First")
// true์ด๋ฉด ViewController, false์ด๋ฉด SearchTableViewController
if UserDefaults.standard.bool(forKey: "First") {
let sb = UIStoryboard(name: "Trend", bundle: nil)
guard let vc = sb.instantiateViewController(withIdentifier: "ViewController") as? ViewController else { return }
self.window?.rootViewController = vc // ์ด๋ค ๋ทฐ ์ปจํธ๋กค๋ฌ๋ฅผ ๋ณด์ฌ์ฃผ๊ฒ ๋ค.
} else {
let sb = UIStoryboard(name: "Search", bundle: nil)
guard let vc = sb.instantiateViewController(withIdentifier: "SearchTableViewController") as? SearchTableViewController else { return }
self.window?.rootViewController = vc // ์ด๋ค ๋ทฐ ์ปจํธ๋กค๋ฌ๋ฅผ ๋ณด์ฌ์ฃผ๊ฒ ๋ค.
}
self.window?.makeKeyAndVisible() // Window๊ฐ ๋ทฐ ์ปจํธ๋กค๋ฌ๋ฅผ ํ๋ฉด์ ๋น์ถฐ์ฃผ๋ ์ญํ
}
๋ก๊ทธ์์ (์ฒซ ํ๋ฉด์ผ๋ก ๋์๊ฐ๊ณ ์ถ์ ๋, ์ฒ์๋ถํฐ ์์ํ๊ณ ์ถ์ ๋)
- ์ฒซ ํ๋ฉด์ผ๋ก ์ ํ (๊ธฐ๋ณธ์ ์ธ ํ๋ฉด ์ ํ ๋ฐฉ์์ ์ฌ์ฉํ๋ฉด ์ ๋จ - push/present)
- ๋ฐ์ดํฐ ์ด๊ธฐํ (UserDefault ๋ฐ์ดํฐ ์ด๊ธฐํ)
- ํ ๋ง ๋ฐ๊ฟ ๋
- ์ฌ์ฉ์๊ฐ ๋ฐ์ดํฐ๋ฅผ ๋ณต๊ตฌํ์ ๋
- ํ์ ๋ชจ๋/ํํฐ ๋ชจ๋ -> ์ฌ์ฉ์ ์ ํ ์
@objc func resetButtonClicked() {
// ์์ ํ๋ฉด ์ด๊ธฐํ
// iOS 13.0+ SceneDelegate ์ธ ๋ ๋์ํ๋ ์ฝ๋
// ๊ธฐ์กด์ ์์ฌ์๋ ํ๋ฉด๋ค์ ๋ฉ๋ชจ๋ฆฌ์์ ์ ๋ถ ๋ด๋ ค๊ฐ๊ฒ ๋๋ค.
// ์ฑ์ ์ํ๋ฅผ ๋ฐ๊ฟ ๋ window๋ฅผ ์ฌ์ฉํ๋ ํธ์ด๋ค.
let windowScene = UIApplication.shared.connectedScenes.first as? UIWindowScene
let sceneDelegate = windowScene?.delegate as? SceneDelegate
let sb = UIStoryboard(name: "Trend", bundle: nil)
guard let vc = sb.instantiateViewController(withIdentifier: "ViewController") as? ViewController else { return }
sceneDelegate?.window?.rootViewController = vc
sceneDelegate?.window?.makeKeyAndVisible()
}
'๐ฑ SeSAC' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[SeSAC] 220726 TIL (2) | 2022.07.26 |
---|---|
[SeSAC] 220725 TIL (0) | 2022.07.26 |
[SeSAC] 220721 TIL (0) | 2022.07.21 |
[SeSAC] 220720 TIL (0) | 2022.07.21 |
[SeSAC] 220719 TIL (0) | 2022.07.21 |