'IBOutlet'이란?

IBOutlet(Interface Builder Outlet)은 인터페이스 빌더에서 생성된 UI 요소와 Swift 코드 간의 연결을 나타내는 키워드이다. 스토리보드에서 생성된 UI 요소(ex: 버튼, 레이블, 이미지뷰 등)를 코드에서 참조하고 조작하기 위해 사용된다.

기본적으로, 스토리보드에서 UI 요소를 선택한 후, 해당 요소를 Swift 코드의 클래스 파일에 드래그하면 자동으로 '@IBOutlet'으로 선언된 변수로 연결된다. 이렇게 연결된 변수는 코드에서 UI 요소를 직접 조작하거나 변경할 수 있는 참조가 된다.

@IBOutlet weak var myLabel: UILabel!

override func viewDidLoad() {
    super.viewDidLoad()
    myLabel.text = "Hello, World!"
}

'IBOutlet'은 변수 앞에 '@' 기호를 붙여서 선언한다. 보통 'weak' 참조로 선언되는데, 이는 메모리 관리 측면에서 순환 참조(circular reference)를 방지하기 위함이다. UI 요소는 스토리보드에서 설정되기 때문에, 'nil' 상태일 수 있으며, 따라서 옵셔널로 선언하는 경우가 많다.

 

'IBAction'이란?

IBAction(Interface Builder Acton)은 사용자 인터페이스에서 발생하는 이벤트(ex: 버튼 클릭, 슬라이더 값 변경 등)에 대한 액션을 처리하기 위해 사용되는 메서드를 나타낸다. 즉, 사용자의 인터랙션에 반응하는 함수와 인터페이스 빌더의 요소를 연결하는 방법이다.

스토리보드에서 버튼 등 이벤트를 발생시키는 UI 요소를 선택한 후, 이를 Swift 코드로 드래그하면 자동으로 '@IBAction'이 붙은 메서드로 연결된다. 이 메서드는 해당 이벤트가 발생할 때 호출된다. 아래는 스토리보드에서 버튼을 추가하고, 이 버튼이 클릭될 때 실행될 액션을 정의하는 예시이다. 버튼을 클릭했을 때, 레이블의 텍스트를 변경하는 동작을 수행한다.

@IBAction func myButtonTapped(_ sender: UIButton) {
    myLabel.text = "Button Clicked!"
}

 

'IBOutlet'과 'IBAction'의 상호작용

보통 IBOutlet과 IBAction은 함께 사용된다. 예를 들어, UI에서 버튼을 클릭하면 레이블의 텍스트를 변경하는 상황에서 레이블을 IBOutlet으로 연결하고, 버튼의 클릭 액션을 IBAction으로 처리한다.

@IBOutlet weak var myLabel: UILabel!

@IBAction func buttonTapped(_ sender: UIButton) {
    myLabel.text = "The button was tapped!"
}

이렇게 하면 UI 요소와 이벤트 핸들링 로직을 코드에서 분리하면서도, UI요소의 상태를 코드에서 제어할 수 있다.

728x90

+ Recent posts