Potato
์•ˆ๋…•ํ•˜์„ธ์š”, ๊ฐ์žก๋‹ˆ๋‹ค?๐Ÿฅ” ^___^ ๐Ÿ˜บ github ๋ฐ”๋กœ๊ฐ€๊ธฐ ๐Ÿ‘‰๐Ÿป

potato's iOS Story/๊ฐœ๋ฐœํ•˜๋ฉด์„œ ๋งŒ๋‚œ ์นœ๊ตฌ๋“ค

[UIKit] UIButton - unrecognized selector sent to class ์—๋Ÿฌ (UIBarButtonItem์˜ Target ์‚ดํŽด๋ณด๊ธฐ)

๊ฐ์ž ๐Ÿฅ” 2023. 2. 7. 16:05
๋ฐ˜์‘ํ˜•

โšซ๏ธ UIBarbuttonItem์„ ๋งŒ๋“ค์—ˆ๋Š”๋ฐ, ๋ฒ„ํŠผ์„ ๋ˆ„๋ฅด๋‹ˆ๊นŒ ์—๋Ÿฌ๊ฐ€ ๋‚œ๋‹ค!

โš ๏ธ unrecognized selector sent to class 0x100d75190

์ง„์งœ์ง„์งœ ๊ฐ„๋‹จํ•œ tableView๋ฅผ ๋งŒ๋“œ๋Š”๋ฐ ์™œ ์ด๋Ÿฐ ์—๋Ÿฌ๊ฐ€ ๋‚˜๋Š” ๊ฒƒ์ธ๊ฐ€!!

์ง€๊ธˆ ์ด๋Ÿฐ ๊ฐ„๋‹จํ•œ ํ…Œ์ด๋ธ”๋ทฐ๋ฅผ ๋งŒ๋“ค์—ˆ๋Š”๋ฐ, ์—ฌ๊ธฐ์„œ ์œ„์— UINavigationBarButton๋งŒ ํด๋ฆญํ•˜๋ฉด ์•ฑ์ด ๊บผ์ง€๋ฉด์„œ ์ €๋Ÿฐ ์—๋Ÿฌ๊ฐ€ ๋‚œ๋‹ค. ๋ฐ”๋กœ๋ฐ”๋กœ,,,, ๋ญ”๊ฐ€ selector์—์„œ ์•ก์…˜์ด ์ž˜ ์ „๋‹ฌ๋˜์ง€ ์•Š๋Š” ๋ฌธ์ œ ๊ฐ™์€๋ฐ,, ์ผ๋‹จ 1์ฐจ์ ์œผ๋กœ ๊ตฌ๊ธ€๋ง์„ ํ•ด๋ดค๋‹ค.

1. ์Šคํ† ๋ฆฌ๋ณด๋“œ๋กœ ๊ฐœ๋ฐœํ–ˆ์„ ๊ฒฝ์šฐ, ํ•˜๋‚˜์˜ ๋ฒ„ํŠผ์— ๋‘ ๊ฐœ ์ด์ƒ์ด IBAction์ด ์—ฐ๊ฒฐ๋˜์–ด์„œ ๊ทธ๋ ‡๋‹ค๊ณ  ํ•œ๋‹ค. 

ํ•˜์ง€๋งŒ ๋‚œ ์ฝ”๋“œ๋ฒ ์ด์Šค๋กœ ๊ฐœ๋ฐœํ•˜๊ณ  ์žˆ์œผ๋‹ˆ ์ด ํ•ด๊ฒฐ๋ฐฉ๋ฒ•์€ ํ†ตํ•˜์ง€ ์•Š์ง€!
์•„๋ฌด๋ฆฌ๊ทธ๋ž˜๋„ ๊ฐ™์€ ์—๋Ÿฐ๋ฐ ๊ฐ™์€ ์›์ธ์ด์ง€ ์•Š์„๊นŒ?

2. โœ… ์›์ธ์€ button์˜ ํƒ€๊ฒŸ์„ ์ž˜๋ชป์„ค์ •ํ–ˆ๋‹ค!

์•ก์…˜์„ ์ œ๋Œ€๋กœ ์ „๋‹ฌํ•˜์ง€ ๋ชปํ•œ๋‹ค๋Š” ๋Š๋‚Œ์ด ๋“ค์—ˆ๊ธด ํ–ˆ๋‹ค. ๊ทผ๋ฐ,, ์ฐพ์•„๋ด๋„ ๋‚˜์˜ค์ง€ ์•Š์•˜๋Š”๋ฐ ๋‚ด๊ฐ€ UIBarbutton์—์„œ target์„ ์„ค์ •ํ• ๋•Œ ์ž˜๋ชปํ–ˆ๋”๋ผ๊ณ ,,, ๊ทผ๋ฐ ์™œ ์ž˜๋ชป๋๋Š”์ง€ ์ด์œ ๋ฅผ ์ฐพ๊ธฐ๊ฐ€ ํž˜๋“ค๋‹ค. ์™œ์ง€? ๋ฌด์Šจ์˜๋ฏธ์ง€?!

์ผ๋‹จ ์—๋Ÿฌ๊ฐ€ ๋‚ฌ๋˜ ์ด์œ ๋Š” target ๋ถ€๋ถ„์— viewcontroller.self๋กœ ์„ค์ •ํ•ด์ฃผ์—ˆ๊ธฐ ๋•Œ๋ฌธ์ด์—ˆ๋‹ค.

private lazy var resetButton = UIBarButtonItem(title: "Reset",
                                          style: .plain,
                                          target: ViewController.self,
                                          action: #selector(resetData))
private lazy var addButton = UIBarButtonItem(image: UIImage(systemName: "plus.circle"),
                                        style: .plain,
                                        target: ViewController.self,
                                        action: #selector(addData))

์—ฌ๊ธฐ์„œ ViewController๋ฅผ ์ง€์šฐ๊ณ , self๋งŒ ์“ฐ๋ฉด ์—๋Ÿฌ๊ฐ€ ๋ฌด์‚ฌํžˆ ํ•ด๊ฒฐ๋˜์—ˆ๋‹ค.

์ž ๊ทธ๋Ÿผ, target์— ๋“ค์–ด๊ฐ€๋Š” self๋Š” ๋ญ˜๊นŒ..? ์™œ ๋ทฐ์ปจํŠธ๋กค๋Ÿฌ ๊ทธ ์ž์ฒด๋ฅผ ๊ฐ€๋ฅดํ‚ค๋ฉด ์•ˆ๋˜๋Š” ๊ฑธ๊นŒ?

 

โšซ๏ธ UIBarButtonItem

์šฐ์„  ๋‚ด๊ฐ€ ๋ฒ„ํŠผ์— ์ค€ UIBarButtonItem ๋†ˆ์˜ ๊ณต์‹๋ฌธ์„œ๋ฅผ ์‚ดํŽด๋ณด์ž.

https://developer.apple.com/documentation/uikit/uibarbuttonitem/1617163-init

 

Apple Developer Documentation

 

developer.apple.com

์ผ๋‹จ UIBarButtonItem์€ ์ด๋ ‡๊ฒŒ ์ƒ๊ฒผ๋‹ค.

๋‚ด๊ฐ€ ๊ถ๊ธˆํ•ดํ•˜๋Š” target์€ Anyํƒ€์ž…์„ ๋ฐ›๋Š”๋‹ค. ๊ทธ๋‹ˆ๊นŒ ์ด๊ฒŒ ๋ชจ๋ƒ๊ตฌ!

ํƒ€๊ฒŸ์€ ์•ก์…˜๋ฉ”์‹œ์ง€๋ฅผ ๋ฐ›๋Š” ๊ฐ์ฒด๋ผ๊ณ  ํ•œ๋‹ค. ๊ทผ๋ฐ.. ์ž˜ ์™€๋‹ฟ์ง€ ์•Š๋Š”๋‹ค.
๊ทธ๋ƒฅ ์ด๊ฒƒ์ €๊ฒƒ ๋„ฃ์–ด๋ณด๋‹ˆ๊นŒ, ์ง€๊ธˆ ์ „๋‹ฌํ•˜๋ ค๊ณ  ํ•˜๋Š” ์•ก์…˜์„ ๋ฐ›๋Š” ๊ฐ์ฒด๊ฐ€ ๋ฌด์—‡์ด๋ƒ! ๊ทธ ํƒ€๊ฒŸ์ด ๋ฐ”๋กœ๋‚˜๋‹ค~ ๋ผ๊ณ  ์„ ์–ธํ•ด์ฃผ๋Š” ๊ฒƒ ๊ฐ™์•˜๋‹ค.

 


 

์ด๋Ÿฐ,, ๊ธฐ์ดˆ ๊ฐœ๋…์— ๋Œ€ํ•ด์„œ ์„ค๋ช…ํ•ด์ค„ ๋ฌด์–ธ๊ฐ€๊ฐ€ ํ•„์š”ํ•˜๋‹ค๊ณ  ๋Š๋ผ๋Š” ์š”์ฆ˜์ด๋‹ค... ํ•˜๋‚˜ํ•˜๋‚˜ ๋„ˆ๋ฌด ๊ถ๊ธˆํ•œ๊ฒŒ ๋งŽ์€๋ฐ, ๋ง‰์ƒ ์ž๋ฃŒ๋ฅผ ์ฐพ์œผ๋ ค๊ณ  ๋ณด๋‹ˆ๊นŒ ๋‚ด๊ฐ€ ์›ํ•˜๋Š” ์„ค๋ช…์ด ๋”ฑ ๋‹ด๊ธด ๊ฒƒ๋“ค์ด ์—†๋‹ค. ๋‚ด๊ฐ€ ๊ทธ๋Ÿฐ ๋ ˆํผ๋Ÿฐ์Šค๋ฅผ ๋งŒ๋“ค์–ด๋‚˜๊ฐ€์•ผ์ง€,,, ํ ..

๋ฐ˜์‘ํ˜•