iOS

[ iOS ] UICollectionViewCell์—์„œ ImageView ์ดˆ๊ธฐํ™” ์‹œ์ ๊ณผ awakeFromNib()

Forest Yun 2025. 1. 8. 01:57
728x90

 

 

์Šคํ† ๋ฆฌ๋ณด๋“œ๋ฅผ ํ†ตํ•ด ImageView๋ฅผ ๋ฐฐ์น˜ํ•ด์•ผํ•˜๋Š” ์ƒํ™ฉ์ด ์žˆ๋‹ค๊ณ  ํ•ฉ์‹œ๋‹ค. ๋ชจ์„œ๋ฆฌ์— ๋‘ฅ๊ทผ ํšจ๊ณผ๋ฅผ ์ฃผ๊ธฐ ์œ„ํ•ด์„œ๋Š” ์Šคํ† ๋ฆฌ๋ณด๋“œ๋งŒ์œผ๋กœ๋Š” ํ•œ๊ณ„๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ์ผ๋ฐ˜์ ์œผ๋กœ ์ฝ”๋“œ์—์„œ UIView.layer.cornerRadius๋ฅผ ์ ์šฉํ•ด ๋‘ฅ๊ทผ ๋ชจ์„œ๋ฆฌ๋ฅผ ๊ตฌํ˜„ํ•ฉ๋‹ˆ๋‹ค. ์ด์ฒ˜๋Ÿผ ๋ณดํ†ต ์Šคํ† ๋ฆฌ๋ณด๋“œ์™€ ์ฝ”๋“œ๋Š” ํ•จ๊ป˜ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

UIViewController์—์„œ๋Š” ์•„์›ƒ๋ › ๋ณ€์ˆ˜์— ์ ‘๊ทผํ•  ๋•Œ ๋ณดํ†ต viewDidLoad ๋‚ด๋ถ€์— ๊ตฌํ˜„ํ•ฉ๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ UICollectionViewCell์—์„œ ์•„์ดํ…œ์œผ๋กœ ๋‘ฅ๊ทผ ๋ชจ์„œ๋ฆฌ๋ฅผ ๊ฐ€์ง„ ImageView๋ฅผ ์‚ฌ์šฉํ•˜๋ ค๋ฉด ์–ด๋””์— ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ์„๊นŒ์š”?

 

 

๋จผ์ € ์ด๋‹ˆ์…œ๋ผ์ด์ €๋ถ€ํ„ฐ ์ƒ๊ฐํ•ด๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. UIView์˜ ์ด๋‹ˆ์…œ๋ผ์ด์ €๋Š” ๋‘ ๊ฐ€์ง€๊ฐ€ ์กด์žฌํ•ฉ๋‹ˆ๋‹ค.

์Šคํ† ๋ฆฌ๋ณด๋“œ๋ฅผ ์‚ฌ์šฉํ•ด UI๋ฅผ ๊ตฌ์„ฑํ•œ ํ›„ ํ•ด๋‹นํ•˜๋Š” ViewController ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•˜๋ฉด ํ˜ธ์ถœ๋˜๋Š” ๊ฒƒ์€ ๋ฐ”๋กœ  init(coder:) ์ด๋‹ˆ์…œ๋ผ์ด์ €์ž…๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ๊ทธ๋ ‡๋‹ค๊ณ  init(coder:) ์— ๋‘ฅ๊ทผ ์ด๋ฏธ์ง€ ํšจ๊ณผ๋ฅผ ๊ตฌํ˜„ํ•œ๋‹ค๋ฉด ์•„๋ž˜์™€ ๊ฐ™์€ ์˜ค๋ฅ˜๋ฅผ ๋งŒ๋‚˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. ๋ฐ”๋กœ imageView๊ฐ€ nil์ด๋ผ๋Š” ์˜ค๋ฅ˜ ๋ฉ”์‹œ์ง€์ž…๋‹ˆ๋‹ค.

swift:37: Fatal error: Unexpectedly found nil while implicitly unwrapping an Optional value

 

 

imageView๊ฐ€ ์™œ nil์ธ์ง€์— ๋Œ€ํ•ด ์ด์•ผ๊ธฐํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” nib file์— ๋Œ€ํ•ด ์•Œ๊ณ  ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

nib file์€ ์ฐฝ ๋ทฐ ์ปจํŠธ๋กค ๋“ฑ์„ ํฌํ•จํ•œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์‚ฌ์šฉ์ž ์ธํ„ฐํŽ˜์ด์Šค์˜ ์‹œ๊ฐ์  ์š”์†Œ๋ฅผ ์„ค๋ช…ํ•ฉ๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์„œ ์„ค๋ช…ํ•œ๋‹ค๋Š” ๊ฒƒ์€, ๋Ÿฐํƒ€์ž„ ์‹œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋‚ด์—์„œ ๊ฐœ์ฒด๋ฅผ ์žฌ์ƒ์„ฑํ•˜๊ณ  ์žฌ๊ตฌ์„ฑํ•  ์ˆ˜ ์žˆ๋Š” ์ •๋ณด๋ฅผ ๊ฐ–๊ณ  ์žˆ๋‹ค๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ nib file๋กœ๋ถ€ํ„ฐ nib loading code๋Š” ๊ฐ์ฒด๋ฅผ ์ธ์Šคํ„ด์Šคํ™”ํ•˜๊ณ  ์ดˆ๊ธฐํ™”ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  nib ๋ชจ๋“  ๊ฐ์ฒด๋“ค์— ๋Œ€ํ•œ ์•„์›ƒ๋ ›๊ณผ ์•ก์…˜์„ ์žฌ์—ฐ๊ฒฐํ•ฉ๋‹ˆ๋‹ค.

 

 

์œ„์˜ ์ดˆ๊ธฐํ™” ์ž‘์—…์ด ๋ฐ”๋กœ init(coder:) ์„ ํ†ตํ•ด ์ˆ˜ํ–‰๋ฉ๋‹ˆ๋‹ค. ์ดํ›„ ์•„์›ƒ๋ ›๊ณผ ์•ก์…˜์ด ์žฌ์—ฐ๊ฒฐ๋˜๊ธฐ ๋•Œ๋ฌธ์— init(coder:) ๋ฉ”์„œ๋“œ ๋‚ด๋ถ€์—์„œ๋Š” “์•„์ง” imageView๊ฐ€ ์—ฐ๊ฒฐ๋˜์ง€ ์•Š์•„ nil์ด์—ˆ๋˜ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๊ทธ๋ ‡๋‹ค๋ฉด ์žฌ์—ฐ๊ฒฐ๋œ ํ›„์˜ ์‹œ์ ์„ ์ฐพ์•„ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค. nib-loading ์ธํ”„๋ผ๋Š” ์žฌ์ƒ์‚ฐ๋˜์–ด ์ดˆ๊ธฐํ™”๋œ ๋ชจ๋“  ๊ฐ์ฒด๋“ค์—๊ฒŒ awakeFromNib ๋ฉ”์‹œ์ง€๋ฅผ ์ „์†ก๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ๊ฐ์ฒด๊ฐ€ awakeFromNib ๋ฉ”์‹œ์ง€๋ฅผ ๋ฐ›์„ ๋•Œ๋Š” ๋ชจ๋“  ์•„์›ƒ๋ ›๊ณผ ์•ก์…˜์ด ์—ฐ๊ฒฐ๋˜์—ˆ์Œ์„ ๋ณด์žฅํ•ฉ๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ์•„์›ƒ๋ › ๋ณ€์ˆ˜์— ์ ‘๊ทผํ•ด ์ถ”๊ฐ€์ ์ธ ์ฝ”๋“œ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜๊ณ  ์‹ถ๋‹ค๋ฉด awakeFromNib()์—์„œ ๊ตฌํ˜„ํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ์ด์œ ๋กœ ์ผ๋ฐ˜์ ์œผ๋กœ awakeFromNib()์€ ๊ฐ์ฒด์— ์ถ”๊ฐ€์ ์ธ ๋””์ž์ธ์ด ํ•„์š”ํ•  ๋•Œ ์žฌ์ •์˜๋˜์–ด ๊ตฌํ˜„๋ฉ๋‹ˆ๋‹ค.

 

 

 

 

 

Nib Files

init(frame:)

awakeFromNib()

init(nibName:bundle:)

init(frame:)

728x90