[iOS] IBOutlet없이 View에 접근하는 방법

IBOutlet을 통해서 View에 접근이 가능하지만 View속성의 Tag를 통해서 접근도 가능하다.





빨간색 뷰와 파란색 뷰의 Tag값은 둘 다 0이다. 이제 버튼을 눌러 배경색을 검은색으로 바꾸는 코드를 구현해보자.

@IBAction func Btn(_ sender: Any) {
        if let view = view.viewWithTag(0) {
            view.backgroundColor = .black
        }
    }

Tag로 View에 접근하는 방법은 viewWithTag 메서드를 사용해서 가능하다. 괄호 안에 값은 접근하고자 하는 View의 Tag값을 넣으면 된다.

이제 버튼을 눌러서 결과를 확인해보면?





왜? 배경색이 바뀐건가
배경도 하나의 View고 Tag값을 가지고 있기 때문이다. viewWithTag 메서드는 Tag값을 찾을 때 Root View(지금 배경이 되는 View)에서 먼저 Tag값을 찾고 찾고자 하는 값이 없으면 아래 뷰로 내려와서 찾는다.

그럼 파란색 뷰의 Tag를 99로 바꾸고 버튼을 눌러보면?

@IBAction func Btn(_ sender: Any) {
        if let view = view.viewWithTag(99) {
            view.backgroundColor = .black
        }
    }




View가 많아지면 관리해야 할 Tag 값이 많아지기 때문에 이 부분이 단점으로…