Swift ํ๋ก์ ํธ๋ฅผ ์ฒ์ ์์ฑํ๊ณ ๋น๋ํ์ฌ ์คํํ๋ฉด ์ฒซํ๋ฉด์ด Main.storyboard๋ก ์ค์ ๋์ด ์์ต๋๋ค. ์ด๋ ๊ธฐ๋ณธ์ ์ผ๋ก ํ์ผ์ ์๋ ViewController.swift ๋ง๊ณ ์์ ์ด ์์ฑํ ๋ทฐ ์ปจํธ๋กค๋ฌ๋ฅผ window์ root view controller๋ก ์ค์ ํ๋ ค๋ฉด ์ด๋ป๊ฒ ํด์ผ ํ ๊น์? ๋ํ ์ฑ ์์๊ณผ ๋์์ ๋ทฐ ์ปจํธ๋กค๋ฌ๋ฅผ ๋ก๋ํ๋ฉด์ ๋ทฐ ์ปจํธ๋กค๋ฌ์์ ํ์ํ ์ด๊ธฐ๊ฐ์ด ์๋ค๋ฉด?! ์ด๋๋ AppDelegate์ ์ฝ๋ ๋ช ์ค์ ์ถ๊ฐํด ์ฃผ์ด์ผ ํฉ๋๋ค.
์ ๊ฐ ํ์ฌ ๊ณต๋ถํ๊ณ ์๋ ์ฑ ์ the big nerd ranch guide ios programming์ ๋ช ๋ ์ง๋ ์ฑ ์ ๋๋ค. ์ฑ ๋๋ก ๋ฐ๋ผํ๋ xcode๊ฐ ์์ ๊ณผ ๋ฐ๊ปด ์ค๋ฅ๊ฐ ์๊ธฐ๋๋ผ๊ตฌ์. ๊ทธ๋์ ์ด๋ฒ์ ์์ xcode์๋ ์๋ window๋ ์ ์ธํด ์ค์ผ ํ๊ณ ์ ์๋๋ window๋ nil๋ก ๋จ๊ณ ๊ทธ๋์! ์ด ๊ธฐํ์ ์ค๋ฅ๋ค์ ์ ๋ฆฌํด ๋ด ๋๋ค.
(์ฃผ์! ํํ ๋ฆฌ์ผ์ด ์๋๋ผ ์ฐธ๊ณ ํ์๋๋ฐ ๋ถํธํ ์ ์์ต๋๋ค)
์ฐ์ ItemsViewController.swift ํ์ผ์ ์์ฑํด ์ค๋๋ค. ์ด ๋ทฐ ์ปจํธ๋กค๋ฌ๋ TableViewController์ด๋ฉฐ
window์ root view controller๋ก ์ง์ ํด ์ค ์ค์ํํธ ํ์ผ์ ๋๋ค.
Main.storyboard๋ก ๊ฐ์ ์๋ ์๋ ๋ทฐ ์ปจํธ๋กค๋ฌ๋ฅผ ์ง์ฐ๊ณ
Table View Controller๋ฅผ ์ถ๊ฐํด ์ฃผ์์ต๋๋ค.
ํด๋น ๋ทฐ ์ปจํธ๋กค๋ฌ์ ๋ (?)์ด๋ผ๊ณ ํ๋์??
๋ทฐ ์ปจํธ๋กค๋ฌ์ ์๋จ์ ์๋
์ด๋ ๊ฒ ์๊ธด ์์ด๋ฅผ ๋๋ฌ์ฃผ๊ฑฐ๋ ๋ทฐ ์ปจํธ๋กค๋ฌ ์ ์ฒด๋ฅผ ๋๋๊ทธ ํ ํ
indicator์์ Custom Class ์ ์์ฑํ ๋ทฐ ์ปจํธ๋กค๋ฌ ํ์ผ ๋ช ์ ์ ์ด ์ค๋๋ค
์ค์ํํธ ํ์ผ์์ ํ์ํ delegate์ datasource๋ฅผ ๊ตฌํํด ์ค๋๋ค.
table view controller๋ฅผ ์ฌ์ฉํ๋ฏ๋ก
์ฌ์ฌ์ฉํ ์ ์ ์๋ณ์๋ ์ ์ด ์ค๋๋ค.
ํด๋น ์๋ณ์๋ ์คํ ๋ฆฌ ๋ณด๋์์ ์ ์ ๋๋ฅด๊ณ Identifier์ ์ง์ ํด ์ฃผ์ด์ผ ์๋ฌ๊ฐ ๋์ง ์์ต๋๋ค.
์ ์ด์ ์ค๋ฅ๋ค์ ํด๊ฒฐํด ๋๊ฐ๋ด ๋๋ค.
์์ฑํ ๋ทฐ ์ปจํธ๋กค๋ฌ๋ฅผ ๋ฃจํธ๋ทฐ๋ก ์ง์ ํ๊ธฐ ์ํด์ ๋ช ๊ฐ์ง ํด์ค์ผ ํ ๊ฒ๋ค์ด ์์ต๋๋ค.
์ฐ์ ์ ํ๋ก์ ํธ์ Info.pilistํ์ผ์ ๋ค์ด๊ฐ ์ค๋๋ค.
Sene Configuration ์ ์ง์ ์ค๋๋ค.
AppDelegate.swift๋ก ์ด๋ํ ๋ค
๊ตฌํํ์ง ์์ ๋ ๋ฉ์๋๋ฅผ ์ญ์ ํด ์ค๋๋ค.
MARK: UISeneSession Lifecycle ์๋์ ์๋ ๋ฉ์๋๋ค์ ์ญ์ ํด ์ฃผ์๋ฉด ๋ฉ๋๋ค.
์ด์ xcode์์๋ window๊ฐ ๋ฏธ๋ฆฌ ์ ์ธ ๋์ด ์์๊ธฐ์
์ฑ ๋ง ๋ณด๊ณ ์งํํ๋ ์ค๋ฅ๊ฐ ์๊น๋๋ค
AppDelegate์์ window๋ฅผ ์ ์ธํด ์ค๋๋ค.
application(_:configurationForConnecting:options:)
๋ฉ์๋์ ํด๋น ์ฝ๋๋ฅผ ์ ์ด ์ค๋๋ค
storyboard๋ฅผ ์ด์ฉํ๊ธฐ ๋๋ฌธ์ ์์ ๊ฐ์ด ์ ๊ณ
as! ๋ค์ ์์ ์ด ์์ฑํ ์ค์ํํธ ํ์ผ ๋ช ์ ์ ์ด ์ฃผ์๋ฉด ๋ฉ๋๋ค.
ํด๋น ๋ถ๋ถ์ ์ฑ ์ ์๋ ๋ด์ฉ์ธ๋ฐ
์ฒ์ ๋ทฐ ์ปจํธ๋กค๋ฌ๋ฅผ ๋ก๋ํ๋ฉด์ ์ด๊ธฐ ๋ฐ์ดํฐ๋ฅผ ์ค์ ํด ์ฃผ๋ ๋ถ๋ถ์ ๋๋ค.
์์์ as!๋ค์ ๋ทฐ ์ปจํธ๋กค๋ฌ๋ฅผ ๋ช ์ํ์ง ์์ผ๋ฉด
(as? as! as ํฌ์คํ ์ ๋ค์ ๊ธฐํ์)
ํ๋กํผํฐ๋ค์ ์ ๊ทผํ ์ ์์ด์
ํด๋น ๋ณ์๊ฐ ์ด๋ค ๋ทฐ ์ปจํธ๋กค๋ฌ๋ฅผ ๊ฐ๋ฆฌํค๋์ง ์ ์ ์๊ธฐ ๋๋ฌธ์ด์์
์ด์ ๋ฃจํธ๋ทฐ ์ปจํธ๋กค๋ฌ๋ก ์ค์ ํด ์ค๋๋ค.
๋ง์ง๋ง์ ์คํ ๋ฆฌ๋ณด๋ identity๊ฐ ์๋ค๋ ์ค๋ฅ๊ฐ ๋์
Identity์ StoryboardID๋ฅผ ์ ์ด ์ค๋๋ค.
AppDelegate์์ instantiateViewController์ ์ ์ด์ค identity์ ๋์ผํ๊ฒ ์ ์ด ์ฃผ๋ฉด ๋ฉ๋๋ค.
์ด๋ ๊ฒ ํ๋ฉด ์ํ๋ ๋ทฐ ์ปจํธ๋กค๋ฌ๋ฅผ ์ฒ์ ํ๋ฉด์ ๋ณด์ฌ ์ค ์ ์๊ณ
๋ฐ์ดํฐ๋ ์ง์ ํ์ฌ ํ๋ฉด์ ๋ฟ๋ ค ์ค ์ ์์ต๋๋ค
>>> ํ๋ฆฐ๋ด์ฉ์ด๋ ์ด์ํ ๋ถ๋ถ์ด ์๋ค๋ฉด ์๋ ค ๊ผญ ์๋ ค ์ฃผ์ธ์! ๊ฐ์ฌํฉ๋๋ค!
'๐ iOS' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
UICollectionView must be initialized with a non-nil layout parameter ์๋ฌ (0) | 2020.09.28 |
---|---|
[Swift] ์์ ๊ฐ๋จํ tutorial -> URLSession์ผ๋ก json api ์์ ํ์ฑ๊น์ง (0) | 2020.09.12 |
[Swift] UINavigationController ์ฌ์ฉํ๊ธฐ (0) | 2020.09.08 |
[iOS] ๋ทฐ ์ปจํธ๋กค๋ฌ(View Controller)์ ์๋ช ์ฃผ๊ธฐ (0) | 2020.08.21 |
[iOS, Swift] Localization(๋ก์ปฌ๋ผ์ด์ง, ํ์งํ) (0) | 2020.08.19 |
๋๊ธ