본문 바로가기

Tech/iOS

[iOS] Day 10 - Tag

728x90

 

주어진 과제에 접근을 하고

수많은 시도 끝에

과제가 풀린 후 

피드백을 받을 때 

더 클린하고 

빠르게 처리되는 코드를 보면 

왜 나는 그렇게 짜지 못 했나 

생각 말고 

새로운 코드를 알게 되어서

행복하다 생각중이다

오늘도 달려보자

 


 

 

위의 영상처럼 여러개의 버튼이 동일한 작동을 할 때 사용하면 좋은 기능이다

 

Tag 지정

버튼을 누르고 Storyboard 상의 Inspector 영역에서

각 버튼 마다 태그를 지정해주자

0부터 8까지 지정해주었다

 

코드 입력해주기

// 감정 버튼을 IBOutlet으로 묶어줌
@IBOutlet var emotionButton : [UIButton]!

// emotionCases(감정 상태 글자)와 emotionArrary(버튼을 누를 때 올라가야 할 숫자 (초기값 0)를 설정 
    var emotionCases: [EmotionEnum] = [.행복해, .사랑해, .좋아해, .당황해, .속상해, .우울해, .심심해, .따분해, .포기해]
    var emotionArrary = [0, 0, 0, 0, 0, 0, 0, 0, 0]
    
//viewDidLoad에 emotionButton tag 반복
    override func viewDidLoad() {
        super.viewDidLoad()
        
        for i in 0...8 {
            emotionButton[i].tag = i
        }
        
// 감정 버튼을 눌렀을 때 액션을 주고 감정 버튼을 누를 때 마다 숫자가 증가하는 코드를 짰다
    @IBAction func emotionButtonTapped(_ sender: UIButton) {
        emotionArrary[sender.tag] += 1
        let emotionCase = emotionCases[sender.tag]
        let emotionString = emotionCase.rawValue
        emotionLabelCollection[sender.tag].text = emotionString + "\(emotionArrary[sender.tag])"
    }

 

처음 짰던 코드는 감정 + 숫자를  String + Int(String)로 생각해서  '감정' + '문자인 숫자'로 나누어서 구현 했다 

시간도 많이 걸리고 index를 주는 부분에서 상당히 어려움을 겪었었다 

tag를 배우고 tag를 활용하자 수많은 코드가 날아가고 쉽게 풀렸다 

꼭 코드를 짜기 전 구조화 하고 계획을 하는 습관을 기르자!