Swift/Xcode

[Swift] tag ํ™œ์šฉํ•˜์—ฌ ์ฝ”๋“œ ๊ฐ„์†Œํ™”ํ•˜๊ธฐ

yeggrrr๐Ÿผ 2024. 5. 20. 14:46
728x90




์•ฑ์„ ๋งŒ๋“ค๋‹ค๋ณด๋ฉด,

์—ฌ๋Ÿฌ ๊ฐœ์˜ ๋ฒ„ํŠผ์ด ๊ฐ™์€ ๊ธฐ๋Šฅ์„ ํ•˜๋Š” ํ™”๋ฉด์„ ๋งŒ๋“ค์–ด์•ผํ•˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ์žˆ์„ ๊ฒ๋‹ˆ๋‹ค.



0



์œ„ ํ™”๋ฉด์ฒ˜๋Ÿผ ๋ง์ด์ฃ !


์ฒ˜์Œ์— ์ด ์•ฑ์„ ๋งŒ๋“ค ๋•Œ, '๋…ธ๊ฐ€๋‹ค๊ฐ€ ๋”ฐ๋กœ ์—†๊ตฌ๋‚˜.' ์ƒ๊ฐํ–ˆ์Šต๋‹ˆ๋‹ค.

9๊ฐœ์˜ ๋ฒ„ํŠผ์„ ๋ชจ๋‘ ํ•˜๋‚˜ํ•˜๋‚˜ Outlet ์—ฐ๊ฒฐ์„ ํ•˜๊ณ ,
๋ฒ„ํŠผ์ด ํด๋ฆญ๋์„ ๋•Œ, ์–ด๋–ค ๊ธฐ๋Šฅ์„ ํ•ด์•ผํ•˜๋Š”์ง€ 9๊ฐœ์˜ Action์„ ์—ฐ๊ฒฐํ–ˆ๊ฑฐ๋“ ์š”!



์ด๋ ‡๊ฒŒ ํ•˜๋‹ค๋ณด๋‹ˆ, ๊ฐ™์€ ์ฝ”๋“œ๊ฐ€ ์—ฌ๋Ÿฌ ๋ฒˆ ์ ํ˜€์žˆ์œผ๋‹ˆ ์ฝ”๋“œ๋„ ์—„์ฒญ ๊ธธ์–ด์กŒ์Šต๋‹ˆ๋‹ค.๐Ÿ˜…
 
์ด๋Ÿฐ ๋ถ€๋ถ„๋“ค์„ ๊ฐ„์†Œํ™”ํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐฉ๋ฒ•์„ ํ•˜๋‚˜ ์ •๋ฆฌํ•ด๋ณด๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค!



๋ฐ”๋กœ! tag๋ฅผ ํ™œ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•์ž…๋‹ˆ๋‹ค.


์Šคํ† ๋ฆฌ๋ณด๋“œ์—์„œ ์š”์†Œ๋“ค์„ ํด๋ฆญํ•ด์„œ ์šฐ์ธก ์ธ์ŠคํŽ™ํ„ฐ ์˜์—ญ์„ ์‚ดํŽด๋ณด๋ฉด,


์ด๋ ‡๊ฒŒ Tag๊ฐ€ ์žˆ๋Š” ๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋งŒ์•ฝ ๋ฒ„ํŠผ 3๊ฐœ๋ฅผ ๋งŒ๋“ค์—ˆ๋‹ค๊ณ  ๊ฐ€์ •ํ•œ๋‹ค๋ฉด,


๋ฐ”๋กœ ์ด tag๋ฅผ ํ™œ์šฉํ•ด์„œ ์–ด๋–ค ๋ฒ„ํŠผ์„ ๋ˆŒ๋ €๋Š”์ง€  ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.


์œ„์— ์˜ˆ์‹œ์ฒ˜๋Ÿผ 9๊ฐœ์˜ ๋ฒ„ํŠผ์€ ์•„๋‹ˆ์ง€๋งŒ,
๋น„์Šทํ•˜๊ฒŒ Button 3๊ฐœ์™€ Label 3๊ฐœ๋ฅผ ๋งŒ๋“ค์–ด ๋ด…์‹œ๋‹ค.
(button1, button2, button3 / Label1, Label2, Label3)

๊ทธ๋ฆฌ๊ณ  ๋ฒ„ํŠผ ํƒ€์ดํ‹€๋„ ๋„ฃ์–ด์ฃผ๊ฒ ์Šต๋‹ˆ๋‹ค.
(๋ฒ„ํŠผ1, ๋ฒ„ํŠผ2, ๋ฒ„ํŠผ3)


๊ทธ๋ฆฌ๊ณ  ๋ชจ๋‘ Outlet ์—ฐ๊ฒฐ์„ ํ•ด์ค๋‹ˆ๋‹ค.


๊ทธ๋Ÿฐ ๋‹ค์Œ Button์˜ Action์„ ์—ฐ๊ฒฐํ•ด์ค„๊ฑด๋ฐ,
3๊ฐœ์˜ Button์„ ํ•˜๋‚˜ํ•˜๋‚˜ ์—ฐ๊ฒฐํ•˜์ง€ ์•Š๊ณ , ํ•˜๋‚˜๋งŒ ์—ฐ๊ฒฐํ•ด์ค๋‹ˆ๋‹ค.


๊ทธ๋ฆฌ๊ณ  ์ด๋ ‡๊ฒŒ ์™ผ์ชฝ ์ฝ”๋“œ ์˜์—ญ์—์„œ ์ขŒ์ธก +๋ถ€๋ถ„์„ dragํ•ด์„œ
2๋ฒˆ์งธ ๋ฒ„ํŠผ, 3๋ฒˆ์งธ ๋ฒ„ํŠผ ์ˆœ์„œ๋Œ€๋กœ ์—ฐ๊ฒฐํ•ด์ค๋‹ˆ๋‹ค.


์ด๋ ‡๊ฒŒ ํ•˜๋ฉด ํ•˜๊ณ , print("ํด๋ฆญ๋จ")์„ ์ฐ๊ณ ,
์‹คํ–‰ํ•ด์„œ ๋ฒ„ํŠผ 3๊ฐœ๋ฅผ ๊ฐ๊ฐ ํด๋ฆญํ•ด๋ณด๋ฉด


๋ชจ๋‘ ํด๋ฆญ์ด ๋˜๋Š” ๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ์„๊ฒ๋‹ˆ๋‹ค.




๋‹ค์Œ์œผ๋กœ ์Šคํ† ๋ฆฌ๋ณด๋“œ๋กœ ๊ฐ€์„œ
๊ฐ๊ฐ์˜ ๋ฒ„ํŠผ์— tag ๋ฒˆํ˜ธ๋ฅผ ๋ถ€์—ฌํ•ด์ค๋‹ˆ๋‹ค.
(button1: 0 / button2: 1 / button3: 2)



IBAction์œผ๋กœ ์—ฐ๊ฒฐํ•œ ๋ถ€๋ถ„์„ ์ž˜ ๋ณด๋ฉด, ๋งค๊ฐœ๋ณ€์ˆ˜ ๋ถ€๋ถ„์— (_ Sender: UIButton)๋ผ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.
์•ž ๊ฒŒ์‹œ๊ธ€์—์„œ ์ •๋ฆฌํ–ˆ๋“ฏ!
_๋Š” ์™€์ผ๋“œ์นด๋“œ์‹๋ณ„์ž, sender๋Š” ๋‚ด๋ถ€ ๋งค๊ฐœ๋ณ€์ˆ˜(Parameter Name) ์ž…๋‹ˆ๋‹ค.

์ด ํ•จ์ˆ˜ ๋‚ด๋ถ€์—์„œ sender๋ผ๋Š” ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š”๊ฑฐ์ฃ !


๋ญ”์ง€ ๋ชจ๋ฅผ๋• ๊ทธ๋ƒฅ print ์ฐ์–ด๋ด…์‹œ๋‹ค.
print(sender)๋ฅผ ํ•ด๋ณผ๊นŒ์š”?


sender๋ฅผ print ์ฐ์–ด๋†“๊ณ , button1์„ ๋ˆŒ๋Ÿฌ๋ดค์Šต๋‹ˆ๋‹ค.
๋ญ๊ฐ€ ์ž”๋œฉ ๋‚˜์™€์žˆ๋Š”๋ฐ, ๋ฒ„ํŠผ1์— ๋Œ€ํ•œ ์ •๋ณด๋“ค์ด ๋‹ด์•„์žˆ๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.


๊ทผ๋ฐ, ํƒ€์ดํ‹€์— ๋Œ€ํ•œ ์ •๋ณด๋ฅผ ์•Œ๊ณ  ์‹ถ์€ ๊ฒฝ์šฐ
๋„ˆ๋ฌด ๋งŽ์•„์„œ ์–ด๋–ค๊ฒŒ ํƒ€์ดํ‹€์ธ์ง€ ์•Œ ์ˆ˜ ์—†์ž–์•„์š”?


์—ฌ๊ธฐ์„œ 'currentTitle'์ด๋ผ๋Š” ๊ฒƒ์„ ์‚ฌ์šฉํ•ด๋ณผ๊ฒ๋‹ˆ๋‹ค.

@IBAction func button1Clicked(_ sender: UIButton) {
        
 	print(sender.currentTitle) 
    
}


์ด๋ ‡๊ฒŒ ์ž‘์„ฑํ•œ ๋‹ค์Œ ์‹คํ–‰ํ•ด์„œ ๊ฐ๊ฐ์˜ ๋ฒ„ํŠผ์„ ํด๋ฆญํ•ด๋ณด๋ฉด,


์˜ต์…”๋„์ด์ง€๋งŒ, ๊ฐ ๋ฒ„ํŠผ์— ์ง€์–ด์ค€ title์— ๋งž๊ฒŒ  ๋‹ค๋ฅด๊ฒŒ ์ฐํžˆ๋Š” ๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

ํƒ€์ดํ‹€ ๋ง๊ณ ๋„


์ด๋ ‡๊ฒŒ ๋‹ค์–‘ํ•œ ์ •๋ณด๋ฅผ ๋”ฐ๋กœ ๊ฐ€์ ธ์˜ฌ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.โ˜บ๏ธ


์ด currentTitle๋ฅผ ํ™œ์šฉํ•ด์„œ ์กฐ๊ฑด๋ฌธ์„ ๋„ฃ์–ด๋ณด๋ฉด!

        if sender.currentTitle! == "๋ฒ„ํŠผ1" {
            oneCount += 1
            label1.text = "\(oneCount)๋ฒˆ"
        } else if sender.currentTitle! == "๋ฒ„ํŠผ2" {
            twoCount += 1
            label2.text = "\(twoCount)๋ฒˆ"
        } else {
            if sender.currentTitle! == "๋ฒ„ํŠผ3" {
                threeCount += 1
                label3.text = "\(threeCount)๋ฒˆ"
            }
        }


์ด๋Ÿฐ ์กฐ๊ฑด๋ฌธ์„ ๋„ฃ์œผ๋ฉด,
๋ฒ„ํŠผ 1์„ ํด๋ฆญํ–ˆ์„ ๋•Œ, Label1์ด
๋ฒ„ํŠผ 2์„ ํด๋ฆญํ–ˆ์„ ๋•Œ, Label2์ด
๋ฒ„ํŠผ 3์„ ํด๋ฆญํ–ˆ์„ ๋•Œ, Label3์ด 
ํ•˜๋‚˜์”ฉ ์ฆ๊ฐ€ํ• ๊ฒ๋‹ˆ๋‹ค.


์ด๋ฒˆ์—๋Š” ์œ„์—์„œ ์–ธ๊ธ‰ํ–ˆ๋˜ tag๋ฅผ ์ณ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

print(sender.tag)


๋ฒ„ํŠผ1, 2, 3 ์„ ์ˆœ์„œ๋Œ€๋กœ ๋ˆŒ๋Ÿฌ๋ดค๋”๋‹ˆ

์•ž์„œ ์Šคํ† ๋ฆฌ๋ณด๋“œ์—์„œ ์„ค์ •ํ•ด๋’€๋˜ tag๋ฒˆํ˜ธ๊ฐ€ ์ฐํžˆ๋Š” ๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ด tag๋ฅผ ํ™œ์šฉํ•˜๋ฉด, ๊ฐ์ • ๋ฒ„ํŠผ์„ ํด๋ฆญํ–ˆ์„ ๋•Œ ์ˆซ์ž๊ฐ€ ํ•˜๋‚˜์”ฉ ์ฆ๊ฐ€ํ•˜๋Š” ์ฝ”๋“œ๋ฅผ ๊ฐ„์†Œํ™”ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

    if sender.tag == 0 {
            count[0] = count[0] + 1
        } else if sender.tag == 1 {
            count[1] = count[1] + 1
        } else {
            count[2] = count[2] + 1
        }


์ด๋ ‡๊ฒŒ tag๋„ ํ™œ์šฉํ•  ์ˆ˜ ์žˆ์„๊ฒ๋‹ˆ๋‹ค!!

๊ทธ๋ฆฌ๊ณ  ์ด๊ฒƒ๋„ ๊ธธ๋‹ค๋ฉด??

        if sender.tag == 0 {
            count[sender.tag] = count[sender.tag] + 1
        } else if sender.tag == 1 {
            count[sender.tag] = count[sender.tag] + 1
        } else {
            count[2] = count[2] + 1
        }


์ด๋Ÿฐ์‹์œผ๋กœ sender.tag๋กœ ์ฑ„์šฐ๋‹ค๋ณด๋ฉด...

count[sender.tag] = count[sender.tag] + 1


์ด๋ ‡๊ฒŒ๊นŒ์ง€๋„ ์ค„์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค!!

๋” ์ค„์ธ๋‹ค๋ฉด..

count[sender.tag] += 1

 

์•ž์— if๋ฌธ์„ ํ™œ์šฉํ–ˆ๋˜ ๊ฒƒ๊ณผ ๋น„๊ตํ•˜๋ฉด, ์ƒ๋‹นํžˆ ์ฝ”๋“œ๊ฐ€ ์ค„์–ด๋“  ๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.




์ด์™€ ๊ฐ™์€ ๋ฐฉ๋ฒ•์œผ๋กœ ์•„์šธ๋ › ์ฝ”๋“œ๋„ ์ค„์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋ฐ”๋กœ Outlet Collecion์„ ํ™œ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•์ž…๋‹ˆ๋‹ค!


Label์„ ์—ฐ๊ฒฐํ•  ๋•Œ, ์ปค๋„จ์…˜ ๋ถ€๋ถ„์—์„œ ๋‚ด๋ ค๋ณด๋ฉด 'Outlet Collection'์ด ์žˆ์Šต๋‹ˆ๋‹ค.


์ด๊ฑธ๋กœ ์—ฐ๊ฒฐํ•œ ๋‹ค์Œ!


์ฝ”๋“œ์—์„œ ์ขŒ์ธก +๋ฅผ dragํ•ด์„œ ๋‚˜๋จธ์ง€ label๊ณผ๋„ ์—ฐ๊ฒฐํ•ด์ฃผ๋ฉด ๋ฉ๋‹ˆ๋‹ค.


        label1.text = "\(count[0])๋ฒˆ ํด๋ฆญ"
        label2.text = "\(count[1])๋ฒˆ ํด๋ฆญ"
        label3.text = "\(count[2])๋ฒˆ ํด๋ฆญ"


๊ทธ๋Ÿฌ๋ฉด! ์›๋ž˜๋Š” ์œ„์™€ ๊ฐ™์ด ์ ์–ด์ฃผ์–ด์•ผํ•˜๋Š” ๋ถ€๋ถ„์„


labelList[sender.tag].text = "\(count[sender.tag])๋ฒˆ"


์ด๋ ‡๊ฒŒ sender.tag๋ฅผ ํ™œ์šฉํ•ด์„œ ์ฝ”๋“œ๋ฅผ ์ค„์—ฌ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.โ˜บ๏ธ



 

728x90