[Swift] IBOutlet Collection이란 무엇일까?

2022. 1. 9. 00:15Swift, iOS Foundation

이번 글은 iOS 개발을 하면서 아주 유용하게 쓸 수 있는 꿀팁을 하나 가져왔다.

나도 코드 리뷰에서 알게 된 내용인데, 성격이 같은 넘버링으로 되어있는 Outlet 변수들을 묶어서 사용하는 방법이 있다고 한다.

그것이 바로 IBOutlet Collection이라는 것을 활용하는 방법인데, 
바로 어떻게 사용하는지 확인하러 가보자 ^__^

iOS 개발을 하면서, 특별한 이유 없이, first.. second.. third... 이런 순서대로 나열되어 있는 것들을 만들어본 적이 있지 않은가..?

@IBOutlet weak var firstTmiLabel: UILabel!
@IBOutlet weak var secondTmiLabel: UILabel!
@IBOutlet weak var thirdTmiLabel: UILabel!

결국은 이 라벨들이 모두 같은 작업을 하게 될텐데,
이것들을 일일이 반복작업하면, 너무 비효율적인 작업이 될 거라는 생각이 들곤 했다.

하지만, 이제는 그럴 필요가 없다.

IBoutlet을 뷰컨트롤러에 연결해줄 때, 기존 Outlet이 설정되어 있는 것을 Outlet collection으로 바꿔서 선택해주자.

그리고, 이제 나머지 라벨들도 전부 앞에서 만들었던 이 아웃렛 컬렉션 변수에 연결을 해주면,

아래와 같이 Oultet 변수 하나에 여러 라벨들이 묶여 있는 모습을 보이게 될 것이다.

그럼 이제 저 라벨들을 일괄적으로 사용을 하고 싶을 때, 아래와 같이 for 반복문을 사용해서 저 라벨 각각에 접근하면 된다.

그러면 이렇게 아래와 같이 일괄적으로 red 컬러 색상이 바뀐 것을 확인할 수 있을 것이다.

앞으로 각각 객체의 속성에 대해서 일괄적인 작업이 필요하다면, 이런 식으로 사용해도 되겠다 ^___^

// 텍스트 컬러를 red로 수정하는 예시
func setLabelColor() {
    for lb in tmiLabelCollection {
        lb.textColor = .red
    }
}

최종 구현 ^__^