ํฐ์คํ ๋ฆฌ ๋ทฐ
์ค๋์ ์ ํ ๊ณต์ article ์ค
'Managing Content in your app's windows'์ ๋ํด ์์๋ณด๊ฒ ์ต๋๋ค!
ํ์ฌ ํ๋ก์ ํธ์์ ์ฌ์ฉ ์ค์ธ pageViewController์ ๋ํด ๊ณต๋ถํ๋ ์ค ๋ฐ๊ฒฌํ ๊ธ๋ก
viewController์ navigationViewController์ ๋ํด
์๋กญ๊ฒ ์๊ฒ ๋ ๋ด์ฉ์ด ๋ง์ ๊ธ๋ก ๋จ๊ฒจ๋ด ๋๋ค ๐
ํด๋น ๊ธ์ viewController๋ฅผ ํตํด ์ ์ ์๊ฒ ์ด๋ป๊ฒ view๋ฅผ ๋ณด์ฌ์ฃผ๋์ง,
๋ ์ด๋ค ๋ฐฉ์์ผ๋ก ํ๋ฉด์ ๊ต์ฒดํ๊ณ ํ์(navigation)ํ๋ ์ง์ ๋ํ ๊ธ์ ๋๋คโ๏ธ
์ง์ ๊ณต์ ๋ฌธ์ ๊ธ์ ๋ณด๊ณ ์ถ์ผ์๋ค๋ฉด ์๋ ๋งํฌ๋ฅผ ํ์ธํด์ฃผ์๊ณ ,
์ ๋ ๊ณต์ ๋ฌธ์์ ๋ด์ฉ๊ณผ ์ ์ ์๊ฐ์ ํจ๊ป ์ ๋ฆฌํด๋ณด๊ฒ ์ต๋๋ค.
Managing content in your app’s windows | Apple Developer Documentation
๊ทธ๋ผ ์์ํด๋ณด๊ฒ ์ต๋๋ค ๐ค๐ค
(์์ง์ ๋ธ๋ก๊ทธ ์ฐ๋๊ฒ ์ด์ ์ด์..ใ )
OverView
์ฑ UI์์ Scene๋ค์ Window ๊ฐ์ฒด์ ์ฌ๋ฌ ๊ฐ์ View ๊ฐ์ฒด๋ฅผ ๊ฐ์ ์ ์์ต๋๋ค.
(์์ ๋ฌธ์์์๋ window ์์ 'a'๊ฐ ๋ถ์ด window ํ ๊ฐ๋ง ๊ฐ๋ฅํ ์ค ์์๋๋ฐ,
UIWindowScene ๊ด๋ จ ๊ณต์ ๋ฌธ์๋ฅผ ๋ณด๋ ์ฌ๋ฌ ๊ฐ๋ ๊ฐ๋ฅํ๋ค๊ณ ๋์ ์์ต๋๋ค..๐ญ )
ํ์ธ ํด๋ณด์ธ์!!
https://developer.apple.com/documentation/uikit/uiwindowscene/
๋จผ์ scene, window, view, viewController๊ฐ ๋ญ์ง ๊ฐ๋จํ๊ฒ ์์๋ณด๊ณ ๋์ด ๊ฐ๊ฒ ์ต๋๋ค!
(์ฌ์ค ๋๋ฌด ๊ฐ๋จํ๊ฒ๋ง ๋์์ ๋ค๋ฅธ ์๋ฃ๋ฅผ ์ฐพ์๋ณด๋ฉด ๋ ๊ณต๋ถํ์ง๋ง ์์ง๊น์ง ํท๊ฐ๋ ค์..
๊ทธ๋์ ๋์ค์ ๋ฐ๋ก ์ ๋ฆฌํ๋ ๊ธ์ ๋จ๊ฒจ๋ณด๊ฒ ์ต๋๋ค.๐)
์ค๋ช ์ ์์ ์ฐ์ ๊ทธ๋ฆผ์ผ๋ก ๋๋ต์ ์ธ ๋๋์ ๋ณด๊ณ ๊ฐ์์ฃ โ๏ธ
Scene์ UI ์ธ์คํด์ค๋ฅผ ๋ํ๋ด๊ธฐ ์ํด
window์ view๋ฅผ ํฌํจํ๋ ์ธ์คํด์ค๋ฅผ ์๋ฏธํฉ๋๋ค.
Window๋ UI์ ๋จ๋ ๋ถ๋ถ์์ ๋ณด์ด์ง ์๋ ์ปจํ ์ด๋ ์ญํ ์ ํ๊ณ ,
View์ ์ต์ ์ ์ปจํ ์ด๋ ์ญํ ์ ํ๋ฉฐ View์ ์ด๋ฒคํธ๋ฅผ routeํฉ๋๋ค.
๋ํ, window๋ ๊ฐ์ฅ ์ค๋ ์ด์๋จ๋ ๊ฐ์ฒด๋ก,
ํด๋น scene์ ์ ์ฒด์ ์ธ UI๊ฐ ์ฌ๋ผ์ง ๋ dismiss ์ํฌ ์ ์์ต๋๋ค.
(๋ค์ ๋งํด, scene์ด ์ฌ๋ผ์ง ๋ window๋ ํด์ ์ํฌ ์ ์๋ค๋ ๋งโ๏ธ)
View๋ ์ ์ ๊ฐ ํ๋ฉด์์ ๋ณด๋ ์ค์ ์ปจํ ์ธ ๋ก
ํ ์คํธ, ์ด๋ฏธ์ง, ์ปค์คํ ํ์ ์ ์ปจํ ์ธ ๋ค์ ์ ๊ณตํฉ๋๋ค.
window์ ์๋ view๋ค์ ์๋ก์ด ์ปจํ ์ธ ๋ ์ ๋ณด๋ฅผ ๋ํ๋ด๊ณ ์ถ์ ๋
๋ฐ๋ณต์ ์ผ๋ก ๊ต์ฒดํ ์ ์์ต๋๋ค.
๋ง์ง๋ง์ผ๋ก viewController๋ UIkit์์ ์ ๊ณตํ๋ ๊ฒ์ผ๋ก,
์ฑ์์ ๋จ์ผ view ์ธํธ๋ฅผ ๊ด๋ฆฌํ๊ณ , ํด๋น ๋ทฐ์ ์ ๋ณด๋ฅผ ์ต์ ์ํ๋ก ์ ์งํ๋ฉฐ
window์์ view๋ฅผ ํจ์จ์ ์ผ๋ก ๊ด๋ฆฌํ๊ณ ์ถ๊ฐ, ์ญ์ ๋ฅผ ์ฝ๊ฒํ ์ ์๋๋ก ํด์ค๋๋ค.
๊ฐ๊ฐ์ window๋ ์ด๊ธฐ view๋ฅผ ์ธํ ํ๊ธฐ ์ํด root view contorller๋ฅผ ๊ฐ์ผ๋ฉฐ,
์ดํ์ view๋ฅผ ๋ฐ๊พธ๊ณ ์ถ์ ๋ UIKit์ ์ถ๊ฐ์ ์ผ๋ก ๋ค๋ฅธ view controller๋ฅผ presentํ๊ณ , dismiss๋ฅผ ๋ช ๋ นํฉ๋๋ค.
๊ฐ๋จํ๊ฒ ์ ๋ฆฌ ํ์๋ฉด...
ํฐ ํ์์ Scene์ ์ฐ๋ฆฌ๊ฐ ๋ณด๋ UI์ ์ปจํ ์ด๋ ์ญํ ์ ํ๋ Window๋ค์ ๊ด๋ฆฌํด์ฃผ๊ณ ,
Window๋ ํด๋น ์ปจํ ์ด๋๋ฅผ ์ฑ์ ์ค View ์ธํธ๋ค์ ๊ด๋ฆฌํฉ๋๋ค.
View controller๋ Window๋ฅผ ๋์ ์ปจํ ์ด๋์์ ๋ณด์ฌ ์ค View ์ธํธ๋ฅผ ๊ต์ฒดํ๋ ์ญํ ์ ํ๋ฉฐ,
ํด๋น View์ ๋ฐ์ดํฐ๋ฅผ ์ต์ ํ ํ๋ ์ญํ ์ ํฉ๋๋ค.
๊ฒฐ๋ก ์ ์ผ๋ก, view controller๋ ์ง์ ์ ์ผ๋ก View๋ฅผ ๋ค๋ฃจ๊ธฐ ๋๋ฌธ์
UI๋ฅผ ์ํด ์ค์ํ ์ญํ ์ ์ํํ๋ค๋ ๊ฒ์ ์ ์ ์์ต๋๋ค.
Define view controllers for each unique page of content
์๋ก์ด ์ฑ์ UI๋ฅผ ๋์์ธ ํ ๋,
๋จผ์ UI๋ฅผ ์ปจํ ์ธ ์ ๋ณ๊ฐ์ ํ์ด์ง๋ก ๋๋๋๋ค.
๊ทธ๋ฆฌ๊ณ ๊ฐ ํ์ด์ง๋ค์ ์ฑ์ ๋ง์ถค ๋ฐ์ดํฐ๋ฅผ ๋ํ๋ด๋ ํน๋ณํ ๋ฐฉ์์ ์ ์ํฉ๋๋ค.
์๋ฅผ ๋ค์ด, ํ์ด์ง ๋ง๋ค ๋ค๋ฅธ ๋ฐฉ์์ ์ ์ํ ์ ์๋๋ฐ
๋ฐ์ดํฐ๋ฅผ ํ ์ด๋ธ์ ํ์ผ๋ก ํ์ํ๊ฑฐ๋, ๊ฒฉ์ ์ด๋ฏธ์ง๋ก ๋ฐ์ดํฐ๋ฅผ ๋ณด์ฌ์ค ์ ์์ต๋๋ค.
๋ง์ฝ ๋ฐ์ดํฐ ์บก์ฒ๋ฅผ ํ์๋ก ํ๋ ํ์ด์ง๊ฐ ์๋ค๋ฉด text field๋ฅผ ํ์ํ๋ ๊ตฌ์ฑ์ ๊ฐ์ ์ ์์ต๋๋ค.
(๋ฐ์ดํฐ ์บก์ฒ๋ ์ฌ์ฉ์๊ฐ ๋ฐ์ดํฐ๋ฅผ ๋ฐ๊พธ๊ฑฐ๋ ์ ๋ ฅํ๋ ๊ฒ์ ์๋ฏธ)
๋ฐ๋ก ์๋ ์ด๋ฏธ์ง์ ๋ณด์ด๋ ๊ฒ์ฒ๋ผ
๊ฐ ํ์ด์ง๋ฅผ ๋ค๋ฅธ ๋ฐฉ์์ผ๋ก ๋ง๋ค๊ณ ํ์๋ก ํ๋ ๋ฐฉ์์ผ๋ก ๋ฐ์ดํฐ๋ฅผ ๋ณด์ฌ์ฃผ๋ฉด ๋๋ ๊ฒ ์ ๋๋ค.โ๏ธ
์ ๋ฆฌํ์๋ฉดโ๏ธ
๋ง์ ์ฑ๋ค์ ๋ค์ํ ํ์ด์ง ๊ตฌ์ฑ์ ๊ฐ๊ณ ์๋๋ฐ,
๋ง์ฝ ๊ฐ์ ๊ตฌ์ฑ์ ํ์ด์ง(๊ทธ๋ฌ๋ ๋ค๋ฅธ ๋ฐ์ดํฐ๋ฅผ ๋ณด์ฌ ์ค์ผ ํ๋)๋ฅผ ๋ณด์ฌ์ค์ผ ํ๋ค๋ฉด
ํด๋น ํ์ด์ง๋ฅผ ์ฌํ์ฉํ์ฌ ๋ค๋ฅธ ๋ฐ์ดํฐ๋ฅผ ๋ณด์ฌ์ฃผ๋ฉด ๋๋ค๋ ๋ง์ ๋๋ค.
(๋ฏธ๋ฆฌ ํ์ด์ง ํ์ ๋ง๋ค์ด ๋๊ณ , ๋ค๋ฅธ ๋ฐ์ดํฐ๋ฅผ ์ฑ์์ ์ฌํ์ฉํ์ ๐)
๊ทธ๋ฌ๋๊น ์ฐ๋ฆฌ๋ ์ํ๋ ๋ฐ์ดํฐ๋ฅผ ๋ณด์ฌ ์ค view๋ฅผ ์ ๊ทธ๋ ค๋๊ณ (์ฌ์ฌ์ฉ ๊ฐ๋ฅํ view),
ํด๋น view๋ฅผ ์ด์ฉํ์ฌ ๋ฐ์ดํฐ๋ฅผ ์ ๋ณด์ฌ์ฃผ๋ฉด ๋๋ค๋ ๊ฒโ๏ธ
๊ทธ๋ฌ๋ฉด ์ด์ ..
ํด๋น view๋ฅผ ์ ๊ด๋ฆฌํ๊ณ , ๋ฐ์ดํฐ๋ฅผ ์ ๋ฃ์ด ์ฃผ๊ธฐ ์ํด์๋
์ฐ๋ฆฌ๊ฐ ๋ญ ํด์ผํ๋ ์ง๊ฐ ์๋ฌธ์ด ๋ญ๋๋ค!
(์๋ฌธ์ด ์๋ค์ด๋ ๊ถ๊ธํ ์ฒ ๐)
์ฌ๊ธฐ์ ๋ฑ์ฅํ๋ ๊ฒ์ด ๋ฐ๋ก View Controller ์ ๋๋ค.๐
์ฐ๋ฆฌ๋ view controller๋ฅผ ์ ์ํ์ฌ,
ํด๋นํ๋ ํ์ด์ง๋ฅผ ์ ๋ณด์ฌ์ฃผ๊ณ , ์ผ์นํ๋ view๋ฅผ ์ ๊ด๋ฆฌํด์ฃผ๋ฉด ๋๋ ๊ฒ ์ ๋๋ค.
๋ค์ ๋งํด,
view controller๋
view์ ๋ฐ์ดํฐ๋ฅผ ์ฑ์ฐ๊ณ , ๋ฐ์ดํฐ๊ฐ ๋ฐ๋ ๋ view๋ฅผ ์ ๋ฐ์ดํธํ๋ฉด์
๋ฐ์ดํฐ ๋ชจ๋ธ ๊ฐ์ฒด์๊ฒ ๋ฐ์ดํฐ๊ฐ ๋ฐ๊ผ์์ ์๋ฆฌ๋ ์ญํ ์ ํฉ๋๋ค.
๋ํ, ํ์ฌ ํ๊ฒฝ์ ๋ง๊ฒ view ์ฌ์ด์ฆ, ์์น, ๊ฐ์์ฑ ๋ฑ์ ์กฐ์ ํ๊ณ
๋ค๋ฅธ ์ปจํ ์ธ ํ์ด์ง ์ ํ์ ์ฉ์ดํ๊ฒ ํฉ๋๋ค.
view controller์ ์ญํ ์ ๋ํด ๋ ์์ธํ๊ฒ ์๊ณ ์ถ๋ค๋ฉด ์๋ ๋ด์ฉ ์ฐธ๊ณ ํด์ฃผ์ธ์ โ๏ธ
Displaying and managing views with a view controller
์ถ๊ฐ๋กโ๏ธ
ํด๋น ๊ธ์์ view controller๋ฅผ ์ ์ํ๋ ๊ฒ์ด
ํญ์ ์๋ธ ํด๋์คํ์ ์ปค์คํ ํ๋์ ํฌํจ (subclassing and adding custom behavior)ํ๋ค๊ณ ํ๋๋ฐ..
์ด๊ฑด ์๋ก์ด view controller๋ฅผ ์ ์ํ ๋,
ํญ์ UIViewController๋ฅผ ์์ ๋ฐ์ ์๋ก์ด ํด๋์ค๋ฅผ ์ ์ํ๊ณ ,
์๋ก์ด ๊ธฐ๋ฅ์ ์ํด ์ฌ๋ฌ ํ๋กํผํฐ๋ ๋ฉ์๋๋ฅผ ์ถ๊ฐํ๊ธฐ ๋๋ฌธ์
์๋ธ ํด๋์คํ์ ์ปค์คํ ํ๋์ ํฌํจํ๋ค๊ณ ํํํ๋ ๊ฒ ๊ฐ์ต๋๋ค.
(์๋ง๋..?)
class newViewController: UIViewController {
var newProperty = ""
func newMethod() {
newProperty = "adding custom behavior"
}
}
Choos the navigation model for your content
์ด์ navigaton model์ ๋ํด ์์๋ณด๊ฒ ์ต๋๋ค.
์ฌ์ค ์ด ๊ธ์ ๋ณด๋ฉด์ navigaion model์ด๋ผ๋ ํค์๋๋ฅผ ์ฒ์ ์์์ต๋๋ค ๐ญ
์ฌ์ค ์ฑ์ ํ ๋ฒ์ด๋ผ๋ ๋ง๋ค์ด ๋ณด์ จ๋ค๋ฉด
UINavigationController, UITabBarController๋ฅผ ๋ค์ด๋ณด์ ์ ์ด ์์ ๊ฒ๋๋ค.
(์๋๋ผ๋ฉด.. ์ด๋ฒ ๊ธฐํ์ ์ ์ฒ๋ผ ๋ ์์๊ฐ๋ฉด ๋์ฃ โ๏ธ)
์ด๊ฒ๋ค์ด ๋ฐ๋ก navigation model์ ๋๋ค.
๋ฌผ๋ก ์๋ ์ด๋ฏธ์ง ์ฒ๋ผ ๋ชจ๋ธ์ด ๋ ์์ง๋ง, ๋ง์ด ์ฌ์ฉํ๋ ๊ฑธ๋ก๋
UINavigationController๋ UITabBarController๋ผ๊ณ ์๊ฐํฉ๋๋ค.
(๋ฌผ๋ก , ํ์ ์ ์ ๋ชฐ๋ผ์.. ๊ทธ๋ฅ ์ ์ ์งง์ ๊ณต๋ถ ๊ธฐ๊ฐ์์๋ ์ด๋ ๊ฒ ์๊ฐํ๋ค๋ ๊ฒ..)
์ด์ naviagtion model์ ๋ํด ์กฐ๊ธ ๋ ์์ธํ ์์๋ณด๊ฒ ์ต๋๋ค โ๏ธ
์ฐ์ ,
navigation model์ด ์ ํ์ํ ์ง์ ๋ํด ์์๋ด ์๋ค.
๊ฐ๋จํ ์ฑ์ ๊ฒฝ์ฐ ํ๋ฉด ๋ถ๋์ด ๋งค์ฐ ์ ์ง๋ง,
๋๋ถ๋ถ์ ์ฑ์ ์ปจํ ์ธ ๋ฅผ ๋ํ๋ด๊ธฐ ์ํด ๋ค์ํ ๋ถ๋์ ํ๋ฉด์ ๊ฐ์ต๋๋ค.
์ด๋ ํ๋ฉด๋ค ์ฌ์ด๋ฅผ ์ฝ๊ฒ ์ด๋ํ ์ ์๋๋ก(= ํ์ํ ์ ์๋๋ก = navigating)
๋์์ฃผ๋ ๊ฒ์ด navigation model์ ๋๋ค.
์ด์ ์์ ๋ง์ ์กฐ๊ธ ๋ ์ด๋ ต๊ณ ? ๊น์ด? ์ค๋ช ํ์๋ฉด
๋ค์ํ view controller๋ค ์ฌ์ด๋ฅผ ์ฝ๊ฒ ํ์ํ ์ ์๋๋ก navigation model์ด ํ์ํ๋ฐ,
UIKit์ navigation model ๊ตฌํ์ ์ํด container view controller๋ฅผ ์ ๊ณตํด์ค๋๋ค.
(์ค๋ช ํ๋ ๋๋ ์ด๋ ต๋ค ใ ใ )
์๊น ์์์ ์ค๋ช ํ๋๋ฐ
ํ์ด์ง(view)๋ฅผ ๊ด๋ฆฌํ๊ธฐ ์ํด์ ๊ฐ ํ์ด์ง์ view controller๋ฅผ ์ ์ํด์ผ ํ๋ค๊ณ ํ์ต๋๋ค !
๋ ๊ฐ ํ์ด์ง๋ฅผ ์ ํํ๋ ์ญํ ์ ํ๋ ๊ฒ๋ view controller์ ๋๋ค !
(๋ค์ ๋งํด, ํ์ด์ง๋ค๋ผ๋ฆฌ ์ ํํ ํ ๋ view controller๋ค๋ผ๋ฆฌ ์๋ก ์ ํ์ ์ํจ๋ค๋ ๋ป..)
์ด์ ๋ณธ๋ก ์ผ๋ก ๋์์ค๋ฉด
view controller ์ฌ์ด๋ฅผ ์ฝ๊ฒ ์๋ค ๊ฐ๋ค ํ ์ ์๊ฒ ๋์์ฃผ๋ ๊ฒ์ด navigation model ์ด๋ผ๋ ๋ง์ด๊ณ ,
UIKit์ ์ด ๋ชจ๋ธ์ ์ํด container view controller๋ผ๋ ๊ฒ์ ์ง์ํด์ค๋ค๋ ๋งโ๏ธ
(UIkit์ด ๋ญ์ง ๋ชจ๋ฅด์ ๋ค๋ฉด,, ์ผ๋จ์ view๋ฅผ ๊ทธ๋ฆฌ๊ธฐ ์ํ ํ๋ ์์ํฌ ์ ๋๋ก ์๊ฐํ๊ณ ์ผ๋จ ํจ์ฐ ๐
ํ๋ ์์ํฌ๋ ๋ชจ๋ฅด์ ๋ค๋ฉด....
๋์ค์ ์๊ฐ์ด ๋๋ค๋ฉด UIKit, SwiftUI, ํ๋ ์ ์ํฌ ๋ฑ.. ์ฉ์ด ์ค๋ช ๊ธ์ ์์ฑํด ๋ณด๊ฒ ์ต๋๋ค..)
์ด์ container view controller์ ๋ํด ์์๋ณด๊ฒ ์ต๋๋ค.
container view controller๋ ์์ view contrellr๋ก ์๋ ค์ง view controller๋ฅผ ๊ด๋ฆฌํ๋
ํน๋ณํ ํ์ ์ view controller์ ๋๋ค.
์ฌ๊ธฐ์ container์ ์ญํ ์ ์์ ์ view (container view controller) ๊ฒฝ๊ณ ๋ด์์
์์ view controller์ root view์ ์์น๋ฅผ ์ง์ ํด์ฃผ๋ ๊ณณ์ด๊ณ ,
ํ ๋ฒ์ ํ๋์ ์์๋ง presnetํ๊ฑฐ๋, container view controller์ ๋ฐฉ์์ ๋ฐ๋ผ
๋์์ ์ฌ๋ฌ ์์ view controlelr๋ฅผ ๋ํ ๋ผ ์ ์์ต๋๋ค.
๋ํ container๋ ๊ทธ๋ค์ ์์ view controller์ view๋ฅผ ์คํฌ๋ฆฐ ์๋ ๋ฐ์์
์ ๋๋ฉ์ด์ ์ ์ ์ฉํ์ฌ ํจ๊ณผ์ ์ผ๋ก navigation ์ ํ์ ๋ํด ์๊ฐ์ ํผ๋๋ฐฑ์ ์ ๊ณตํ ์ ์์ต๋๋ค.
(ex. UIPageViewControlelr์ ๊ฒฝ์ฐ, ์ฑ ์ ๋๊ธฐ๋ ๊ฒ ๊ฐ์ ์ ๋๋ฉ์ด์ ์ ์ ๊ณตํด์ค๋๋ค ๐)
container view controller์ container์ ๋ํด ๋ ์์ธํ ์ค๋ช ํ๊ณ ์ถ์ง๋ง...
๋๋ฌด ๊ธธ์ด์ง ๊ฑฐ ๊ฐ์ผ๋ ์ผ๋จ์ ์ฐธ๊ณ ์๋ฃ๋ฅผ ์ฌ๋ฆฌ๊ณ ๋์ค์ ๋ฐ๋ก ์ ๋ฆฌ ํด๋ณด๊ฒ ์ต๋๋ค ๐
https://woozzang.tistory.com/145
๊ทธ๋ฌ๋๊น โ๏ธ
์ฐ๋ฆฌ๋ ์ผ๋ฐ์ ์ผ๋ก navigation model ๊ธฐ๋ฅ์ด ํ์๋ก ํ๋ค๋ฉด,
๊ทธ๋ฆฌ๊ณ UIKit์ ์ฌ์ฉํ๋ค๋ฉด
UIKit์์ ์ง์ํด์ฃผ๋ container view controller๋ฅผ ์ฌ์ฉํ๋ฉด ๋ฉ๋๋ค ๐
์???
Apple์ด ๊ทธ๋ ๋ค๋๊น ~
์ด์ ์๊น ์์์ ์ธ๊ธํ navigation model ๋ค์ ๋ํด
๊ฐ๋ตํ๊ฒ ์์๋ณด๊ฒ ์ต๋๋ค.
์ฐ์ ์ฌ์ง ๋จผ์ โ๏ธ
์ฒซ ๋ฒ์งธ๋ก๋ UINavigationController์ ๋๋ค.
UINavigationController์
navigation interface๋ ์์ view controller์ ์คํ์ ๊ด๋ฆฌํด์ค๋๋ค.
์๋ก์ด ์์ view controller๋ฅผ ๋ณด์ด๊ณ ์ถ๋ค๋ฉด ์คํ์ push ํ์ฌ
์ด์ view controller๋ฅผ ๋์ฒดํฉ๋๋ค.
๊ทธ๋ฆฌ๊ณ pop์ ๊ธฐ์กด view controller๋ฅผ ์์ ๊ณ
์๋ view controller๋ฅผ ๋ณด์ด๊ฒ ํฉ๋๋ค.
(push๋ ์ด์ view controller๋ฅผ ์์ ๋๊ฒ ์๋๋ผ, ๊ทธ ์๋ก ์๋ ๋ค๋ ์๋ฏธ์ ๋๋ค.
pop์ ๋งจ ์์ ์์นํ ์์ view controller๋ฅผ ์์ ๋ ๊ฒโ๏ธ)
๋ค์์ผ๋ก๋, UISplitViewController์ ๋๋ค.
UISplitViewController๋ ํ๋ฉด์์ ๊ณต๊ฐ์ด ๊ฐ๋ฅํ ๋
split-view interface์์ ์ ์ ์ฌ์ด๋๋ก ๋ ๊ฐ์ ์์ view controller๋ฅผ ๊ด๋ฆฌํฉ๋๋ค.
๋ค์ ๋งํด, ๊ณต๊ฐ์ด ๋ถ์กฑํ๋ค๋ฉด ์ฌ์ฉํ ์ ์๊ณ ,
์ด ๊ฒฝ์ฐ์๋ navigation interface๋ก ๋ํ๋ฉ๋๋ค.
๊ทธ๋ฆฌ๊ณ ํด๋น interface๋ primary-detail interface์ ๋๋ค.
์ด๊ฒ์ ๋ ๊ฐ์ ์น์ ์ผ๋ก ๋๋์ด, ํ๋๋ ์ฃผ๋ก ๋ชฉ๋ก์ด๋ ์นดํ ๊ณ ๋ฆฌ๋ฅผ ๋ณด์ฌ์ฃผ๋ primary ์น์ ,
๋ค๋ฅธ ํ๋๋ ์ฌ์ฉ์๊ฐ ์ ํํ ํญ๋ชฉ์ ์์ธ ์ ๋ณด๋ฅผ ๋ณด์ฌ์ฃผ๋ detail ์น์ ์ผ๋ก ๊ตฌ์ฑํ๋ interface๋ฅผ ๋ปํฉ๋๋ค.
(GPT ์งฑ ๐)
๋ค์์ผ๋ก๋, UITabBarController์ ๋๋ค.
tab-bar interface๋ ํ๋จ์ ์ผ๋ จ์ ๋ฒํผ์ ๋ํ๋ด๊ณ ,
๋ฒํผ์ ์ ํํ๋ฉด ๋ฒํผ๊ณผ ๊ด๋ จ๋ ์์ view controller๋ฅผ ๋ํ๋ ๋๋ค.
๋ค์์ผ๋ก, UIPageViewController์ ๋๋ค.
UIPageViewController๋ ์์๊ฐ ์ง์ ๋์ด ์๋ ์์ view controller๋ฅผ ๊ด๋ฆฌํ๊ณ ,
paged interface์์ ํ ๋ฒ์ ํ ๊ฐ ๋๋ ๋ ๊ฐ์ ํ์ด์ง๋ฅผ preset ํฉ๋๋ค.
์ฌ์ฉ์๋ swiping(์์ผ๋ก ๋๊ธฐ๊ธฐ) ๋๋ tapping(ํฐ์นํ์ฌ ๋๊ธฐ๊ธฐ)์ผ๋ก
์์ view controller ์ฌ์ด๋ฅผ ์ด๋ํ ์ ์์ต๋๋ค.
ํ์ฌ ์งํ์ค์ธ ํ๋ก์ ํธ์์ UIPageViewController๋ฅผ ์ฌ์ฉํ๊ณ ์์ด
๋ง์ ๊ณ ๋๊ณผ ์๋ จ์ ๊ฒช์๋๋ฐ.. ๋์ค์ ํ๋ก์ ํธ๊ฐ ๋๋๋ฉด ํด๋น ๋ด์ฉ์ ๋ํด์๋
๊ธ์ ์์ฑํด๋ณด๊ฒ ์ต๋๋ค ๐
(๋นจ๋ฆฌ ํ๋ก์ ํธ๊ฐ ๋๋ฌ์ผ๋ฉด..)
๋ง์ง๋ง์ผ๋ก custom container view controller ์ ๋๋ค.
์ฅ โโโ
์์ ์ฌ์ง์ 4๊ฐ์ธ๋ฐ ์ ๋ ์์ง.. ์ถ์ง๋ง
apple์์ ์ง์ํด์ฃผ๋ ๊ฒ๋ง ์ธ ์ ์๋ค๋ฉด ๋๋ฌด ์ฌ๋ฏธ์์ผ๋๊น..
(๋ ์ด๊ฒ๋ง ํด๋ ์ฌ๋ฏธ์์ ๊ฑฐ ๊ฐ์๋ฐ ๐)
apple์์๋ ์ ํฌ๊ฐ ์ํ๋ ๋ฐฉ์์ผ๋ก ์ปค์คํ ํ ์ ์๊ฒ ๋ฐฉ์์ ๋ง๋ จํด์คฌ์ต๋๋ค.
์ปค์คํ ๋ฐฉ์์ผ๋ก๋
๋ค์ํ UIKit container view controller๋ฅผ ๊ฒฐํฉํ ์ ์์ต๋๋ค.
์๋ฅผ ๋ค์ด split-view interfae์ ์ผ์ชฝ ์ฐฝ์ UINavigationController๋ฅผ ๋๋ ๊ฒ์ ํํ ์ปค์คํ ๋ฐฉ์์ ๋๋ค.
(์ ์ฒด์ ์ผ๋ก UISplitViewController๋ก ๊ตฌํํ๊ณ ,
์ธ์ชฝ ์น์ ์ธ ์์ view controller ์๋ฆฌ์ UINavigationViewController๋ฅผ ์ค์ ํ๋ค๋ ๋ง โ๏ธ)
๋ํ, ์ ์ฒด์ ์ผ๋ก ์๋กญ๊ฒ ๋ง๋๋ ๊ฒ๋ ๊ฐ๋ฅํ๊ธฐ ๋๋ฌธ์,
์์ ๋ง์ ์๋ก์ด container view controller๋ฅผ ๋ง๋ค ์๋ ์์ต๋๋ค.
์ง๊ธ๊น์ง container view controller์ ๋ํด์ ์ค๋ช ํ๋๋ฐ..
ํธ์ฅ์ ํ ๊ฐ์ง ์ง๋ฌธ์ด ์์ ์ ์์ต๋๋ค.
(์์ด๋ ๊ถ๊ธํ ์ฒ..๐ )
continer view controller๋ฅผ ์ฌ์ฉํ์ง ์์๋
์๋ก์ด view controller๋ฅผ presentํ๋ฉด ์ด์ view controller๋ฅผ ๋ฎ๊ณ ๋ค๋ฅธ view๋ฅผ ๋ณด์ฌ ์ค ์ ์๋๋ฐ
๊ตณ์ด container view controller๋ฅผ ์จ์ผ ํ๋ โ
๋ค โ๏ธ
๋ฌผ๋ก view controller์ ์๋ก์ด view controller๋ฅผ ๊ณ์ํด์ present ํด์ฃผ๋ฉด
์ฐ๋ฆฌ๊ฐ ์ํ๋ flow ๋๋ก ํ๋ฉด์ ๋ณด์ฌ์ค ์ ์๊ฒ ์ง๋ง
apple์์๋ container view contorller์ ์ฌ์ฉ์ ๊ถ์ฅํ๊ณ ์์ต๋๋ค.
(apple์ด ๊ทธ๋ ๋ค๋ฉด ๋ฐ๋ผ์ผ์ง..๐ค)
๋ณต์กํ ํ์ ์ฒด๊ณ์์๋ ์์ ๋ฐฉ์์ผ๋ก ์ฑ์ ๊ตฌ์ฑํ๋ค๋ฉด
์คํ ๊ด๋ฆฌ๊ฐ ์ด๋ ค์ธ ๋ฟ๋๋ฌ, ํ๋ฉด ์ ํ ์์๋ ์ด๋ ค์์ด ๋ง์ ์ง ๊ฒ์ ๋๋ค.
(์๋ฅผ ๋ค์ด, ์ด์ ํ๋ฉด์ผ๋ก ๋์๊ฐ์ผ ํด์ ๋๊ฐ์ view controller๋ฅผ ๊ณ์ํด์ ์ด๊ธฐํํ์ฌ ์คํ์ ์๋ ์ํฉ..)
๊ทธ๋ ๊ธฐ ๋๋ฌธ์ ๊ฐ๋จํ flow๊ฐ ์๋๋ผ๋ฉด
container view controller ์ฌ์ฉ์ ์ฐ์ ๊ณ ๋ คํด์ผ ํฉ๋๋ค.
์๊น, ์์์ ์ธ๊ธํ๋ ์์ ๋ง์ container view controller ๋ง๋ค๊ธฐ์ ๋ํด
๊ด์ฌ์ด ์์ผ์ ๋ถ์ ์๋ ๋ฌธ์๋ฅผ ์ฐธ๊ณ ํด์ฃผ์ธ์โ๏ธ
Creating a custom container view controller
Assing a root view controller to each window
์๊น ์์์ root view controller ํค์๋๋ฅผ ์ธ๊ธํ ์ ์ด ์๋๋ฐ,
์ด๋ฒ์๋ root view controller์ ๋ํด ์กฐ๊ธ ๋ ์์๋ณด๊ฒ ์ต๋๋ค.
root view controller๋ window์ ์ด๊ธฐ ํ์ ๋ชจ๋ธ์ ์ ์ํฉ๋๋ค.
์ด๊ฒ ๋ฌด์จ ๋ง์ธ์ง ์์ ๋ด์ฉ ๋ฐํ์ผ๋ก ๋ค์ ์๊ฐํด๋ณด๋ฉด..
window๋ scene์ ์ปจํ ์ด๋ ์ญํ ์ ํ๋ฉฐ view๋ฅผ ๋ณด์ฌ์ค๋ค๊ณ ํ์ต๋๋ค.
๊ทธ๋ฆฌ๊ณ view๊ฐ ๋ณด์ฌ์ง๊ธฐ ์ํด์๋ view controller๊ฐ ํ์ํ๊ณ , view controller๊ฐ view๋ฅผ ์กฐ์ ํ๋ค๊ณ ํ์ต๋๋ค.
๋ง์ฃ โโโ
(๊ธฐ์ต์๋๋ฉด ๋ค์ ์๋ก..)
๊ทธ๋ฐ๋ฐ ํด๋น ์ฑ์ ์ฒ์ ์ผฐ์ ๋ window์ ์ํด ์ฒซ ํ๋ฉด์ด ๋ณด์ฌ์ค์ผ ํ๋๋ฐ
๋ง์ฝ ์ด๊ธฐ ํ๋ฉด์ ๋ํด ์๋ฌด ์ค์ ์ด ๋์ด ์์ง ์๋ค๋ฉด,
๋ง์ view controller ์ค์ ์ด๋ค ๊ฒ์ ๋จผ์ ๋ณด์ฌ ์ค์ผ ํ ์ง ๋ชจ๋ฅด๋ ์ํฉ์ด ๋ฐ์ํฉ๋๋ค.
์ด๋ ์ฒซ view controller๋ฅผ ๋ปํ๋๊ฒ ๋ฐ๋ก root view controller์ ๋๋คโ๏ธ
๋ง์ฝ ์ฐ๋ฆฌ์ ์ฑ์ด scene-based app์ด๋ผ๋ฉด
root view controller๋ scene's stroyboard file์ ์ฒซ view controller์ ๋๋ค.
(scene-based app์ ๊ฐ๋จํ๊ฒ ์ค๋ช ํด์ iOS 13 ์ด์์์ ์ฌ์ฉ๋๋ ์ฑ ์ํคํ ์ฒ์ ๊ฐ๋ ์ผ๋ก,
์ด์ iOS์์๋ ๋จ์ผ window๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ์ฑ์ด ๋์ํ๋๋ฐ, scene-based๋ก ์ค๋ฉด์
์ฌ๋ฌ scene์ ๋์์ ์ง์ํ ์ ์๋๋ก ๋์๋ค๋ ๋ง์ ๋๋ค. )
(GPT ์งฑ ๐)
๋ฐ๋๋ก, code base๋ก window๋ฅผ ์์ฑํ๋ค๋ฉด, window๊ฐ ํ๋ฉด์ ๋ํ๋๊ธฐ ์ ์
rootViewController ํ๋กํผํฐ์ ์ฐ๋ฆฌ๊ฐ ์ง์ ๊ฐ์ ํ ๋นํด์ค์ผ ํฉ๋๋ค.
๋ง์ด ์ข ์ด๋ ค์ด๋ฐ ๊ฐ๋จํ๊ฒ ๋งํ์๋ฉด..
ํ๋ก์ ํธ๋ฅผ xcode์์ ์์ฑํ ๋ ์ฒ์ ์์ฑ๋์ด ์๋ storyboard๊ฐ root view controller๋ก ์ค์ ๋์ด ์๊ณ ,
code-base๋ก ํ๋ก์ ํธ๋ฅผ ์งํํ๋ค๋ฉด ์ง์ window์ root view controller๋ฅผ ์ค์ ํด์ค์ผ ํ๋ค๋ ๋ง์ ๋๋คโ๏ธ
๋ง์ฝ root view controller๊ฐ ์๋ ์ฌ์ง๊ณผ ๊ฐ์ด
container view controller์ผ ๋,
ํด๋น container์ ์ํด ๋ณด์ด๋ ์์ view controller๋ ์ง์ ๊ตฌ์ฑํด์ค์ผ ํฉ๋๋ค.
๋ํ, ๋๋ถ๋ถ์ container view controller๋ ๊ทธ๋ค๋ง์ ์ต์ UI๋ฅผ ์ ๊ณตํ๊ธฐ ๋๋ฌธ์,
์์ view contorller๋ container view controlle์ ๋๋จธ์ง๋ฅผ ์ฑ์์ค์ผ ํฉ๋๋ค.
(์๋ฅผ ๋ค์ด, UISplitViewController์ ์ํด ์ ๊ณต๋๋ ์ ์ผํ UI๋ ์ผ์ชฝ, ์ค๋ฅธ์ชฝ์ ์์นํ
์์ view controller๋ฅผ ๋๋๋ ์ ๋ง ์์ต๋๋ค.
๊ทธ๋ ๊ธฐ ๋๋ฌธ์ ์ฐ๋ฆฌ๋ ์์ view controller๋ฅผ ์ด์ฉํ์ฌ ๋๋จธ์ง UI๋ฅผ ๊ทธ๋ ค์ค์ผ ํฉ๋๋ค.)
๋ง๋ฌด๋ฆฌ
ํด๋น ๋ฌธ์๋ฅผ ํด์ํ๋ฉด์, ๋ด์ฉ๊น์ง ์ถ๊ฐํ๋ ค๋ ๊ธ์ด ๋๋ฌด ๊ธธ์ด์ก์ต๋๋ค..
์ค๊ฐ ์ค๊ฐ ์ ๋งคํ๊ฒ ์๊ณ ์๋ ๊ฐ๋ ๋ค์ ํจ๊ป ๊ณต๋ถํ๋ ๋ง์ ๋์์ด ๋ ๊ฑฐ์ ๊ฐ์ต๋๋ค.
navigation model์ด๋ผ๋ ๊ฒ์ ์๋กญ๊ฒ ์๊ฒ ๋์๊ณ , contanier view controller์ ํ์์ฑ์ ๋ํด์๋ ์๊ฒ ๋์์ต๋๋ค.
์์ผ๋ก ์ ๋ฆฌํด๋ณด๊ณ ์ถ์ ๊ธ๋ค์ ๋ง์ง๋ง.. ์ ๋ ์ ๊ฐ ์ ์ํ ๊ฒ์ ์๊ธฐ์..
์ผ์ฃผ์ผ์ ๊ธ ํ ๊ฐ๋ผ๋ ๋ชฉํ๋ฅผ ์งํค๊ธฐ์ํด ๊พธ์คํ๊ฒ ๊ณต๋ถํ๊ฒ ์ต๋๋ค.
์๋ชป๋ ๋ด์ฉ์ด๋ ํผ๋๋ฐฑ ํด์ฃผ์ค ๊ฒ ์๋ค๋ฉด ๊ผญ ๋๊ธ ๋ถํ๋๋ฆฝ๋๋ค ๐ ๐ ๐
๊ฐ์ฌํฉ๋๋ค.
2024๋ ๊ฐ๋ฐ ๊ณต๋ถ์ ์์ด ๊ณต๋ถ ๊พธ์คํ๊ฒ ํด๋ณด์.
์์ ์์โ๏ธ ํ์ดํ โค๏ธ๐ฅ
'iOS' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[HIG Study] agoda ์ฑ์ผ๋ก ๊ณต๋ถํ๋ HIG (0) | 2024.06.07 |
---|---|
[iOS] ํ๋ก์ ํธ์ TipKit ์ฌ์ฉํ๊ธฐ. (1) | 2024.05.10 |
[iOS] Page view controller๋ฅผ Container View๋ก ์ฌ์ฉํ๋ฉฐ ๋ฐ์ํ ๋ฌธ์ ํด๊ฒฐ ๊ณผ์ (1) | 2024.01.14 |
- ํ๊ณ
- ์์ด ๊ณต๋ถ
- ์๋ฃ ๊ตฌ์กฐ
- ๋ฒ์ฉ๊ณ ์ ์๋ณ
- ์ํํธ์คํฌ
- 24๋ ํ๊ณ
- remainder
- ๊ณต๊ฐ ๋ณต์ก๋
- ๊ฐ๋ฐ์
- Container View Controller
- BOJ
- 2024๋ ๋ชฉํ
- ๋จ์ผ ์ฐ๊ฒฐ ๋ฆฌ์คํธ
- ์ ํ์์นด๋ฐ๋ฏธ
- Anyobject
- containerView
- ํ
- tipkit
- ์์ด ๋ด์ค
- ์๋ฐฉํฅ ์ฐ๊ฒฐ ๋ฆฌ์คํธ
- ๊ดํธ์ ๊ฐ
- Swift
- ๊ท๋๋ผ๋ฏธ ์์ด
- ์คํ
- C++
- 10808
- 2023๋ ํ๊ณ
- ๊ท๋๋ผ๋ฏธ ์์ด
- root view controller
- pageViewController
- Total
- Today
- Yesterday