Develop/Swift

스토리보드, XIB Inspectable에 enum 연동하는 방법

hsleedevelop 2023. 1. 29. 12:17
반응형

스토리보드, XIB에서 UIButton (또는 그외 컨트롤) 에 @IBInspectable을 연동해서 사용하는 경우가 많은데, IBInspectable 값을 enum 으로 선언해서 연동하는 방법입니다.

enum 타입 작성

enum StatusShape:Int {
    case Rectangle = 0
    case Triangle = 1
    case Circle = 2
}

@Inspectable 작성

  // IB: use the adapter
   @IBInspectable var shapeAdapter:Int {
        get {
            return self.shape.rawValue
        }
        set( shapeIndex) {
            self.shape = StatusShape(rawValue: shapeIndex) ?? .Rectangle
        }
    }

Interface Builder에서 확인

Available in IB

기본값 설정

   // Programmatically: use the enum
   var shape:StatusShape = .Rectangle

최종 코드

@IBDesignable
class ViewController: UIViewController {

    enum StatusShape:Int {
        case Rectangle
        case Triangle
        case Circle
    }

    // Programmatically: use the enum
    var shape:StatusShape = .Rectangle

    // IB: use the adapter
    @IBInspectable var shapeAdapter:Int {
        get {
            return self.shape.rawValue
        }
        set( shapeIndex) {
            self.shape = StatusShape(rawValue: shapeIndex) ?? .Rectangle
        }
    }
}

출처 : https://stackoverflow.com/questions/27432736/how-to-create-an-ibinspectable-of-type-enum

반응형