코코아바인딩 :: 컨트롤러의 컨텐츠 제공방법

컨트롤러 컨텐츠를 제공하기

컨트롤러들은 (당연히도) 관리할 컨텐츠가 필요하며, 컨텐츠를 지정하는 방법에는 여러가지가 있다. 바인딩을 생성하는 코드를 통해서도 가능하며, IB를 통해서도 설정할 수 있다.

컨트롤러 컨텐츠 설정하기

NSObjectController와 그 서브클래스들은 -initWithContent:를 통해서 초기화되며, 만약 컨텐츠 바인딩을 의도한다면 nil을 넘겨도 된다. 혹은 명시적으로 setContent:를 통해서 지정해줄 수도 있다. 보통은 컨트롤러의 컨텐츠 바인딩을 통해서 연결하는 것이 일반적이다. 코코아바인딩 :: 컨트롤러의 컨텐츠 제공방법 더보기

NSArrayController explained

배열 컨트롤러

배열 컨트롤러는 일련의 객체 집합을 다루는 바인딩 호환 객체이다. 여기서 ‘집합’은 주로 NSArray인데, 코어데이터 등에서는 NSSet을 쓰기도 한다. 배열 컨트롤러는 배열이 아니고 별도의 배열을 관리한다. 이는 배열을 자동으로 재정렬하거나, 선택된 객체들을 기억하거나 하는 배열 자체에 저장될 수 없는 몇 가지 메타 정보를 가지고 배열을 다루는 것을 도와준다.

배열 컨트롤러는 NSObjectController의 서브클래스로, 다음 메소드를 통해서 초기화할 수 있다.

- (instancetype)initWithContent:(id)content

다시 NSObjectController는 NSController의 자손인데, 이 컨트롤러는 객체의 편집 과정에 따른 이벤트를 발생시키는 기능을 갖고 있다.

  • -objectDidBeginEditing:
  • -objectDidEndEditing:
  • -commitEditing
  • -commitEditingWithDelegate:didCommitSelector:contextInfo:
  • -discardEditing
  • editing(property)

보통의 경우 배열 컨트롤러는 단독으로 쓰일일이 거의 없고, 코코아 바인딩에서 활용된다.

[Cocoa] 코코아 바인딩을 활용한 주소록 앱 만들기

바인딩으로 주소록 만들기

코코아 바인딩을 활용하면 엄청나게 많은 양의 코드를 줄일 수 있다는 것은 많이 알려져 있다. 바인딩을 활용하는 가장 흔한 예는 슬라이더와 텍스트필드를 창에 올려두고 모델 객체의 값과 연결하여 숫자값이나 슬라이더 조작이 어떻게 맞물려 돌아가는지를 살펴보는 예인데, 오늘은 조금더 발전한 형태의 예를 만들어 보도록 하겠다. 예를 들면 주소록 같은 거 말이다.

[Cocoa] 코코아 바인딩을 활용한 주소록 앱 만들기 더보기