view controller์์ init์ ์์ฑํด์ฃผ๋ ค๋ฉด ์ required init์ด ํ์ํ ๊น? required init์ ํ์ ์์ฑ์๋ก ๋ถ๋ชจ ํด๋์ค์ ์์ฑ๋์ด ์๋ค๋ฉด ์์ ํด๋์ค์์๋ ํ์๋ก ์์ฑํด์ฃผ์ด์ผ ํ๋ค. ๋จ, ์ง์ ์์ฑ์๋ฅผ ๋ฐ๋ก ์์ฑํ๋ ๊ฒฝ์ฐ์๋ง. ๋ถ๋ชจ ํด๋์ค์ ์์ฑ์๋ค์ ๊ทธ๋๋ก ๋ฐ์ ๊ฒฝ์ฐ์๋ ๋ฐ๋ก ์์ฑํด ์ค ํ์๊ฐ ์๋ค.
view controller๋ UIViewController๋ฅผ ์์๋ฐ๋๋ค.
class firstViewController: UIViewController
๊ทธ๋ฆฌ๊ณ UIViewController๋ NSCoding์ด๋ผ๋ ํ๋กํ ์ฝ์ ์ฑํํ๊ณ ์๋ค.
class UIViewController: NSCoding
์ด NSCoding ํ๋กํ ์ฝ์๋ required init์ผ๋ก NSCoder๋ฅผ ์ ์ธํ๊ณ ์๋ค.
required init?(coder: NSCoder)
NSCoder๋ ์คํ ๋ฆฌ๋ณด๋๋ก ๊ตฌ์ฑํ UI ํํ๋ฅผ ์ ์ฅํ ํ์ผ์ ๋ถ๋ฌ์ฌ ์ ์๊ฒ ํด์ฃผ๋ ์น๊ตฌ์ด๋ค. (xmlํํ)
์ฆ ์คํ ๋ฆฌ๋ณด๋๋ก ์์ฑํ ๋ required init?(coder: NSCoder)์ ํ์์ ์ผ๋ก ํ์ํ๋ฐ, ๋จ์ํ ์คํ ๋ฆฌ๋ณด๋๋ก๋ง ๋ทฐ๋ฅผ ์์ฑํ๊ฑฐ๋ ํ ๋๋ ์ ์ธํ ํ์๊ฐ ์์ง๋ง ์ฝ๋๋ก init์ ๋ฃ์ด์ฃผ๊ฒ ๋๋ค๋ฉด ์ด๋ ๋ถ๋ชจ ํด๋์ค์ ์์ฑ์๋ค์ ๊ทธ๋๋ก ์์๋ฐ์ง ์๋๋ค๋ ๊ฒ์ด๊ธฐ ๋๋ฌธ์ required init์ ๋ฐ๋ก ์์ฑํด์ฃผ์ด์ผ ํ๋ค.
→ ๊ทธ๋ฐ๋ฐ ์ฒซ๋ฒ์งธ view Controller์์ init์ ๋ฃ์ผ๋ required init์์ ์๊พธ ๋ฉ์ท๋ค. Main ์คํ ๋ฆฌ๋ณด๋์ ์ฐ๊ฒฐ๋์ด ์๊ธฐ์ ์ด ์คํ ๋ฆฌ๋ณด๋์ ๊ทธ ์คํ ๋ฆฌ๋ณด๋์ xml ํ์ผ์ ๋ถ๋ฌ์ค๊ธฐ ์ํด NSCoder๋ฅผ ์ ์ธํด์ฃผ๋ required init์์ ๊ณ์ fatal Error๊ฐ ๋ฌ ๊ฒ์ด๋ผ๊ณ ์ดํดํ๋ค. ๊ทธ๋์ required init์ ๋ด๊ฐ ๋ฃ์ด์ฃผ๊ณ ์ถ์ ์ ๋ณด๋ฅผ ๋ฃ์ผ๋ฉด ์คํ ๋ฆฌ๋ณด๋๋ฅผ ์ฐพ๊ณ , ๊ทธ ์คํ ๋ฆฌ๋ณด๋์ xml ํํ ํ์ผ์ ์ฐพ๊ณ , ์ด ๋๊ฐ์ง๋ฅผ ๋ด๊ฐ ๋ฃ์ด์ฃผ๊ณ ์ถ์ ์ ๋ณด์ ํจ๊ป ๋ฃ์ด์ ์ด view controller๋ฅผ ์์ฑํด์ฃผ๋ ๊ฒ์ด๋ค.
→ ๋๋ฒ์งธ view controller๋ฅผ ๋ถ๋ฅผ ๋๋ required init์์ ๋ฉ์ท๋๋ฐ, ์ด๋ ๋น์ทํ ์ด์ ๊ฐ๋ค. navigation Controller์ push๋ก ๋๊ธธ ๋
instantiateViewController(identifier:creator:)
์ด๊ฒ์ ์ฌ์ฉํ๋๋ฐ idetifier๋ก ์คํ ๋ฆฌ๋ณด๋๋ฅผ ์ฐพ์์ฃผ๊ณ ๊ทธ ์คํ ๋ฆฌ๋ณด๋์ xml ํํ์ ํ์ผ์ ๋ด๊ฐ ์ํ๋ ์ ๋ณด์ ๊ฐ์ด ์์ฑํด์ฃผ๊ธฐ ์ํด NSCoder๊ฐ ๋ฐ๋์ ํ์ํ๋ ๊ฒ ๊ฐ๋ค.