Dev.YoungKyu
YoungKyu's Devlog
전체 방문자
오늘
어제
  • 분류 전체보기
    • 부스트캠프
    • iOS
    • visionOS
    • Backend
    • 알고리즘
    • CS
    • Git
    • Python
    • 끄적끄적

블로그 메뉴

  • 홈
  • 🌝 티스토리 홈
  • ⭐️ 깃허브
  • 태그

공지사항

인기 글

최근 댓글

최근 글

태그

  • Python
  • 알고리즘
  • 백준
  • constraint
  • AVAudioSession
  • boj
  • alamofire
  • 소프트웨어 테스트
  • 티스토리챌린지
  • swift
  • Swift5.7
  • 소프트웨어공학
  • AutoLayout
  • ImageResource
  • MVC
  • jekyll
  • 모듈화
  • 소프트웨어 공학
  • Git
  • 오블완
  • image
  • ios
  • SwiftUI
  • guard
  • CS
  • 부스트캠프
  • Animation
  • Optional
  • Concurrency
  • if let

티스토리

hELLO · Designed By 정상우.
Dev.YoungKyu
IBOutlet과 IBAction
부스트캠프

IBOutlet과 IBAction

2024. 8. 21. 22:49

UIKit을 처음 접할 때, 스토리보드는 구닥다리다, 협업에 불편하다 등 악평을 많이 들어 코드베이스로 입문했었습니다. 그리고 이번에 스토리보드를 사용해보게 되었고, 이번 기회에 스토리보드와 코드간의 연결통로? 역할을 해주는 IBAction 과 IBOutlet이 무엇인지 학습해보기로 했습니다.

목차

  • IB(Interface Builder)
  • IBOutlet
  • IBAction

IB(Interface Builder)

IBOutlet, IBAction 둘다 앞에 IB 라는 접두사가 붙는데 이게 뭔지 궁금했습니다.
IB 는 Interface Builder (인터페이스 빌더) 의 줄임말이고,
인터페이스 빌더는

Xcode에서 사용자 인터페이스(UI, User Interface)를 만들기 위한 그래픽 환경.
The graphical environment for building a user interface (UI) in Xcode.
출처: https://yagom.net/docs/interface-builder/

라고 합니다.
쉽게 말해 코드 작성 대신 GUI에서 마우스 딸깍딸깍으로 UI를 만들 수 있게 도와주는 툴이라고 볼 수 있겠네요!

IBOutlet

스토리보드로 UI를 작성하고, 필요한 로직들을 코드로 작성하다보면 이러한 질문들을 마주하게 됩니다.

  1. 이 코드가 스토리보드의 어떤 객체를 가리키는가?
  2. 스토리보드의 View(UILabel, UIImageView)에 접근하려면 어떤 변수로 접근해야 하는가?

이러한 질문들을 해소해주는 것이 IBOutlet 입니다.
IBOutlet은 코드와 스토리보드의 View객체(UILabel, UIImageView 등)를 연결해줍니다.

대충 아래와 같은 main.storyboard 스토리보드가 있다고 할때,

Open As -> Source Code 를 눌러보면..

xml 형태로 볼수 있게 됩니다..
애초에 스토리보드는 xml로 작성되어 있고, XCode 상에서 GUI로 보여줄 뿐입니다.

이 코드가 어떻게 스토리보드의 객체를 가리킬 수 있을까요?

스토리보드에서 outlet을 검색해보면 connections 안에 연결 정보가 저장되어 있음을 알 수 있습니다.

outlet의 destination은 뭘 가르키는걸까? 확인해보겠습니다.

showButton과 연결된 스토리보드의 객체를 가리키고 있네요!
id 는 해당 outlet 연결정보의 고유 id 였습니다.

IBAction

IBAction은 스토리보드의 View 객체가 이벤트를 발생시켰을 때 동작할 코드를 연결합니다.

IBAction도 IBOutlet과 비슷하게 커넥션에 들어있지 않을까요? 확인해보겠습니다.

맞았네요!

스토리보드의 버튼 객체 안에 connections 안에 action 이란 이름으로 연결 정보가 저장되어 있습니다.

selector 는 내가 지정한 IBAction의 메소드명이고,

destination 은 해당 메소드가 있는 뷰컨트롤러의 id였습니다.

 

종합해보면 스토리보드의 버튼 객체의 특정 이벤트 (사진에선 TouchUpInside)가 발생하면, destination(뷰컨트롤러 id)의 selector(실행할 메소드명)를 찾아가는 구조로 보입니다. 👀✨

 

IBOutlet 과 IBAction 모두 스토리보드에 고유한 id를 가진 연결정보로서 기록되어 있고,

destination, selector 등을 통해 실행할 메소드나 (연결된 변수 - 스토리보드 객체)를 찾아갈 수 있도록 해주고 있었네요!

저작자표시 (새창열림)

'부스트캠프' 카테고리의 다른 글

네이버 부스트캠프 웹・모바일 9기 멤버십 과정 1차 학습스프린트 회고  (0) 2024.09.20
UIScene, UIWindowScene, UIWindow  (1) 2024.08.22
View(ViewController) Life Cycle  (0) 2024.08.21
네이버 부스트캠프 웹・모바일 9기 챌린지 과정을 마치며  (0) 2024.08.11
TCP/IP 소켓 통신 개념 및 Network 프레임워크  (0) 2024.08.07
    '부스트캠프' 카테고리의 다른 글
    • 네이버 부스트캠프 웹・모바일 9기 멤버십 과정 1차 학습스프린트 회고
    • UIScene, UIWindowScene, UIWindow
    • View(ViewController) Life Cycle
    • 네이버 부스트캠프 웹・모바일 9기 챌린지 과정을 마치며
    Dev.YoungKyu
    Dev.YoungKyu
    iOS를 공부하고 있습니다

    티스토리툴바