ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [iOS] init(nibName:bundle:)κ³Ό init?(coder:) μ•Œμ•„λ³΄κΈ°
    iOS/πŸ€– App 2021. 10. 25. 14:21

    μ•ˆλ…•ν•˜μ„Έμš”πŸΆ

    이번 μ‹œκ°„μ—λŠ” UIViewController 의 두 μƒμ„±μžμ— λŒ€ν•΄μ„œ μ•Œμ•„λ³΄κ² μŠ΅λ‹ˆλ‹€.

    이 글을 톡해 μƒμ„±μžκ°€ μ–Έμ œ μ–΄λ–»κ²Œ μ‚¬μš©λ˜λŠ”μ§€ μ•Œκ²Œλ˜μ—ˆμœΌλ©΄ μ’‹κ² μŠ΅λ‹ˆλ‹€!


     

     

    UIViewController λ¬Έμ„œμ—μ„œ μ œκ³΅ν•˜λŠ” ViewController λ₯Ό 생성할 수 μžˆλŠ” 방법

     

     

    init(nibName:bundle) μ•Œμ•„λ³΄κΈ°

     

    첫번째 μ „λ‹¬μΈμž nibName

     

    nib 은 xib ν˜Ήμ€ storyboard 파일의 λΉŒλ“œμ˜ κ²°κ³Όλ¬Όμž…λ‹ˆλ‹€.

    xib 파일둜 μ •μ˜ν•œ VC λŠ” κ·Έ 이름을 κ·ΈλŒ€λ‘œ 가지고 nib 파일둜 λ³€ν™˜λ©λ‹ˆλ‹€.

    λ”°λΌμ„œ ViewController.xib λŠ” "ViewController.nib" 으둜 λ³€ν™˜λ©λ‹ˆλ‹€.

    nibName은 ViewController κ°€ λ˜κ² λ„€μš”!

     

     

     

    μŠ€ν† λ¦¬λ³΄λ“œλŠ” 쑰금 λ‹€λ¦…λ‹ˆλ‹€.

    xib 와 달리 μŠ€ν† λ¦¬λ³΄λ“œλŠ” ν•˜λ‚˜μ˜ νŒŒμΌμ—

    λ‹€μˆ˜μ˜ VC (씬) 그리고 VC κ°„μ˜ 연결정보, μ—”νŠΈλ¦¬ν¬μΈνŠΈ μ •λ³΄κΉŒμ§€ λ‹΄κ³  μžˆμŠ΅λ‹ˆλ‹€.

     

    μŠ€ν† λ¦¬λ³΄λ“œνŒŒμΌ ν•˜λ‚˜μ— ν•˜λ‚˜μ˜ VC λ§Œμ„ 생성해 λ†“μ•˜λ‹€κ³  ν•˜λ”λΌλ„,

    ViewController.storyboard λŠ” ViewController.nib 으둜 λ³€ν™˜λ˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€.

     

    λŒ€μ‹  μŠ€ν† λ¦¬λ³΄λ“œνŒŒμΌμ€ λΉŒλ“œν•˜λ©΄ .stroyboardc λΌλŠ” νŒ¨ν‚€μ§€λ‘œ μƒμ„±λ©λ‹ˆλ‹€.

     

    이 νŒ¨ν‚€μ§€λŠ” μ•„λž˜ 사진과 같은 νŒŒμΌλ“€λ‘œ κ΅¬μ„±λ©λ‹ˆλ‹€.

    참고둜 μ•„λž˜μ— μƒμ„±λœ nib 파일의 이름을 볡사 λΆ™μ—¬λ„£κΈ°ν•˜μ—¬ μƒμ„±μ‹œλ„ν•˜λ©΄ λŸ°νƒ€μž„ 였λ₯˜κ°€ λ°œμƒν•©λ‹ˆλ‹€.

    μš°μ„  .storyboardc 파일 λ‚΄λΆ€μ˜ nibName 을 μž„μ˜λ‘œ μ‚¬μš©ν• μˆ˜λŠ” μ—†λ‹€ μ •λ„λ§Œ μ•Œκ³  λ„˜μ–΄κ°€κ² μŠ΅λ‹ˆλ‹€.

     

     

    결둠은????

     init(nibName:bundle)은

    xib νŒŒμΌμ„ μ΄μš©ν•œ VC 생성에 μ‚¬μš©ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

    bundle μ—λŠ” λ²ˆλ“€μ˜ 이름을 λ„£μœΌλ©΄ λ˜λŠ”λ°, λ””ν΄νŠΈ 값이 메인 λ²ˆλ“€μ΄λ―€λ‘œ μ§€κΈˆ μƒν™©μ—μ„œλŠ” nil 을 넣어도 λ©λ‹ˆλ‹€.

     

    μ•„λž˜μ™€ 같은 μ½”λ“œλ„ κ°€λŠ₯ν•©λ‹ˆλ‹€.

    nibName κ³Ό bundle 은 기본값이 nil 둜 μ„€μ •λ˜μ–΄μžˆκΈ° λ•Œλ¬Έμž…λ‹ˆλ‹€.

    ViewController() λ₯Ό ν˜ΈμΆœν–ˆμ„ λ•Œ

    μœ„μ™€ 같이 ν˜ΈμΆœν•  경우 μ–΄λ– ν•œ UI κ΄€λ ¨ 파일 정보도 μ‚¬μš©ν•˜μ§€ μ•ŠμœΌλ―€λ‘œ,

    ViewController.swift μ½”λ“œμ— μ •μ˜λœ λ‚΄μš©λ§Œμ„ λ°˜μ˜ν•©λ‹ˆλ‹€.

     

    μ•„λž˜λŠ” ViewController.xib 파일 정보λ₯Ό ν™œμš©ν•˜μ—¬ VC μΈμŠ€ν„΄μŠ€λ₯Ό μƒμ„±ν•˜κ³ , key window 에 λ„£μ–΄μ£ΌλŠ” κ³Όμ •μž…λ‹ˆλ‹€.


     

    init?(coder:)

     

    init?(coder:)λŠ” μš°λ¦¬κ°€ 직접 ν˜ΈμΆœν•  일이 μ—†μŠ΅λ‹ˆλ‹€.

    coder μ „λ‹¬μΈμžμ— 전달할 μ μ ˆν•œ NSCoder μΈμŠ€ν„΄μŠ€λ₯Ό μš°λ¦¬κ°€ 직접 λ§Œλ“€μ–΄ μ€„μˆ˜ μ—†κΈ° λ•Œλ¬Έμž…λ‹ˆλ‹€.

    ( λ§Œμ•½ μžˆλ‹€λ©΄ λŒ“κΈ€λ‘œ μ•Œλ €μ£Όμ„Έμš” 😲)

    그럼 μ–Έμ œ ν˜ΈμΆœλ˜λŠλƒ?????

     

    λ°”λ‘œ μ‹œμŠ€ν…œμ΄ μŠ€ν† λ¦¬λ³΄λ“œλ₯Ό μ‚¬μš©ν•΄μ„œ VC μΈμŠ€ν„΄μŠ€λ₯Ό 생성할 λ•Œ μ‚¬μš©ν•©λ‹ˆλ‹€.

    μ½”λ“œλ‘œ κ°„μ ‘μ μœΌλ‘œ ν˜ΈμΆœν•  수 μžˆλŠ” 방법은 λ‹€μŒκ³Ό 같이 μŠ€ν† λ¦¬λ³΄λ“œ μΈμŠ€ν„΄μŠ€μ˜ λ©”μ„œλ“œλ₯Ό μ‚¬μš©ν•˜λŠ” λ°©λ²•μž…λ‹ˆλ‹€.

     

    λ‘λ²ˆμ§Έ 라인의 μ½”λ“œλ₯Ό μ‹€ν–‰ν•  λ•Œμ˜ λ©”μΈμ“°λ ˆλ“œ μ½œμŠ€νƒμž…λ‹ˆλ‹€. init(coder:) κ°€ ν˜ΈμΆœλ˜μ—ˆμŒμ„ μ•Œ 수 μžˆμŠ΅λ‹ˆλ‹€.

    μ΄λ•Œ μ‹œμŠ€ν…œμ΄ μƒμ„±ν•œ μ½”λ”μ—λŠ” μŠ€ν† λ¦¬λ³΄λ“œ νŒŒμΌμ— μ •μ˜ν•œ UI 정보듀을 가지고 μžˆμŠ΅λ‹ˆλ‹€.

    이것을 unarchive ν•˜λŠ” 과정을 거쳐 UI λ‚΄μš©μ„ λ°˜μ˜μ‹œν‚¨ VC μΈμŠ€ν„΄μŠ€λ₯Ό μƒμ„±ν•©λ‹ˆλ‹€.

     

     

    μ—¬κΈ°μ„œ UI λ‚΄μš©μ΄λž€ 말 κ·ΈλŒ€λ‘œ μŠ€ν† λ¦¬λ³΄λ“œ νŒŒμΌμ— μ •μ˜λœ VC κ°€ κ΄€λ¦¬ν•˜λŠ” λ·° 계측에 κ΄€ν•œ λͺ¨λ“  μ •λ³΄μž…λ‹ˆλ‹€.

     

     


    μ˜€λŠ˜λ„ λ‚˜λŠ” μ„±μž₯ν–ˆλ‹€!!πŸ”₯

     

    πŸ€–πŸŸ’[우짱의 iOS λΈ”λ‘œκ·Έ]πŸ”΅πŸ’»

    iOSλ₯Ό κ³΅λΆ€ν•˜λ©΄μ„œ 배운 λ‚΄μš©μ„ κΈ°λ‘ν•˜κ³  μžˆμŠ΅λ‹ˆλ‹€.

    λŒ“κΈ€

μ–΄μ œλ³΄λ‹€ λ°œμ „ν•œ λ‚˜