메이쁘

[Swift] @IBOutlet 과 @IBAction 의 의미 및 생성 방법. 본문

Language/Swift

[Swift] @IBOutlet 과 @IBAction 의 의미 및 생성 방법.

메이쁘 2020. 7. 12. 12:10

안녕하세요.

 

xcode로 iOS를 개발하거나 소스코드를 보다보면 

 

 

  @IBAction func hello() {}

  @IBOutlet weak var textField : TextField?

 

 

이런 함수 / 변수 들이 많이 보이실텐데요.

 

 

맨 앞에 있는 IBAction 및 IBOutlet 에 대해 개념을 확실히 알고 넘어가려고 포스팅하게 되었습니다.

 

깊게 들어갈 순 있지만, 핵심과 사용 방법만 짚고 넘어가는 포스팅입니다!

 

 

 

*** 버전 체크 하고 진행하세요!

 

  -  Swift : 5

  -  XCode : 11.5

  -  iOS : min 9.0

 

 

 

IBOutlet ?


  -  StoryBoard (Objective-C 일 경우, 헤더파일이 되겠죠?) 상에 선언한 View 객체를 Interface Builder(IB) 가 알아볼 수 있게 만드는 것

 

  -  안드로이드(Kotlin 말고 Java의 경우에!!) 의 경우에도, layout.xml에 TextView 를 선언했다고 바로 코드상에서 해당 객체를 사용할 수 있는 것이 아니라 TextView textView = findViewById(R.id.textView) 를 통해 xml view 객체와 코드상의 변수를 연결해야 합니다.

  이 것과 같이 코드 상에서 StoryBoard 에 만든 View 객체를 사용하기 위해 연결해주는 역할을 한다고 보시면 됩니다.

 

 

그럼, 해당 변수를 만들어 storyboard 와 연결시켜 보겠습니다.

 

 

 

  -  storyBoard 를 들어가시면, 위 화면과 같이 나올텐데요. 빨간색으로 동그라미 친 부분을 위에서부터 순서대로 누르세요.

 

  -  Assistant 클릭

 

 

  -  그럼 화면이 두 개로 분할되면서, 왼쪽에는 storyboard 가 있고 오른쪽에는 ViewController 코드가 있게 됩니다.

 

  -  그럼, 스토르보드 상에서 넣은 button(다른 것도 상관없음) 을 마우스 오른쪽 버튼 클릭하면 위와 같이 선택 목록이 나옵니다.

 

  -  여기서, Referncing Outlets -> New Referencing Outlet 옆 동그라미를 누른 후 우측 코드로 드래그 앤 드롭을 합니다.

 

  -  그럼 변수 선언이 완료됩니다!

 

 

 

 

IBAction ?


  -  IBOutlet이 스토리보드 상에 선언한 View 객체를 가리키는 변수 라고 한다면, IBAction은 스토리보드 상에 선언한 View 객체가 특정 이벤트가 발생했을 경우 호출되는 함수 라고 생각하면 됩니다.

 

  -  Action 은 취해야 할 행동 이니까, 해당 View가 특정 이벤트를 발생시켰을 경우 취하는 행동 과 같은 의미입니다.

 

  -  IBAction을 추가하기 위해서는 IBOutlet과 같이 원하는 이벤트가 보이면 우측 코드로 드래그 앤 드롭 하면 끝!

 

 

 

 

@IBOutlet 선언 시 var 앞에 weak 가 같이 생기는데요.

 

이 weak는 weak reference(약한 참조) 라는 의미를 갖고 있습니다.

 

이에 대해선 다른 포스팅을 참고해주세요!

 

 

 

 

감사합니다.

 

 

Comments