NSStepper & NSTextField Bindings

1713 단어
코코아 개발에서는 대상 귀속의 개념을 더욱 많이 활용한다.이것은 NSStepper와 NSTextField가 바인딩된 예입니다.

Model


StepperModel을 생성합니다.swift, 보기 구성 요소의 모델 키 path는 모델에 정의된 변수 이름을 참조합니다.
class StepperModel: NSObject {
    var stepperValue: Int = 0
}

ObjectController


StepperContrller를 만듭니다.swift, 두 개의 보기 구성이 이 Controller를 연결합니다.

Bindings


1. Object Controller Object 바인딩

  • MainStoryboard에서 Object와 Object Controller 두 대상을 드래그합니다.
  • Identity Inspector에서 설정한 부모 클래스는 각각 Stepper Model과 Stepper Controller
  • Object Controller, Bindings Inspector에서 Controller Content > Bind to Stepper Model, Model Key Path 기본값은 self
  • 2. 보기 구성 요소 바인딩 Controller

  • MainStoryboard에서 Stepper와 TextField 구성 요소를 드래그합니다.
  • Bindings Inspector에서 Stepper > Value > Bind to > Stepper Controller, Model Key Path를 stepperValue로 설정하여 모델에 정의된 변수 이름과 일치
  • TextField는 같은 귀속을 하고 두 구성 요소는 Object Controller를 통해 같은 값에 귀속됩니다.

  • 서식 적용


    일반적으로 NumberFormatter는 Inspector에서도 설정할 수 있지만 정수 형식은 정수가 아닌 데이터를 입력하지 않도록 스스로 정의해야 합니다.
        class stepperNumberFormatter: NumberFormatter {
            override func isPartialStringValid(_ partialString: String, newEditingString newString: AutoreleasingUnsafeMutablePointer?, errorDescription error: AutoreleasingUnsafeMutablePointer?) -> Bool {
                if partialString.isEmpty {
                    return true
                }
                return Int(partialString) != nil
            }
        }
    

    viewDidLoad()에서 textField 부여
    textField.formatter = stepperNumberFormatter()
    

    GitHub
    참조 유튜브

    좋은 웹페이지 즐겨찾기