language:cocoa:arraycontroller
ArrayController를 사용해서 NSTableView 에 추가 삭제를 자동
코코아 프로그래밍 책에서 본건데, 책에서는 NSDocument를 사용한 예제를 보여줬지만, 꼭 이걸 써야하나 싶어서 잠깐 해봤는데 잘 처리 됐음
이게 정상 처리된 것인지는 잘 모름 , 2009/3/3
해본 방법
구성사항
Array Controller를 닙뷰에 추가
Library > Cocoa > Objects & Controllers >> Array Controller
AppController 클래스에 배열을 저장할 변수가 선언되어 있음
// header @interface AppController : NSObject { NSMutableArray *webImageList; } @end // code - implementation // 별거 없음, 배열을 생성하고 삭제하는 기능 @implementation AppController - (id)init { [super init]; webImageList = [[NSMutableArray alloc] init]; return self; } - (void) dealloc { //[self webImageList:nil]; // 이 코드의 방식에 주목 [super dealloc]; } @end
배열 내부에 들어갈 아이템 클래스
// header - 스트링 몇개를 가지고 있는 클래스. 키밸류 기능을 활성하기 위해 프로퍼티를 사용했다. @class NSMutableString; @interface ImageItem : NSObject { NSMutableString *postTitle; NSMutableString *imageTitle; NSMutableString *imageUrl; } @property(copy, readwrite) NSMutableString *postTitle; @property(copy, readwrite) NSMutableString *imageTitle; @property(copy, readwrite) NSMutableString *imageUrl; @end // 프로퍼티 덕분에 코드가 줄었다. 스트링에 초기값을 넣은 것은, 디버그용으로 사용한 것임 @implementation ImageItem @synthesize postTitle; @synthesize imageTitle; @synthesize imageUrl; - (id)init { [super init]; postTitle = @"a"; imageTitle = @"b"; imageUrl = @"c"; return self; } - (void)dealloc { [postTitle release]; [imageTitle release]; [imageUrl release]; [super dealloc]; } @end
윈도우 리소스
- NSTableView를 화면에 가져다 놓는다.
- 버튼을 두개 추가한다 : 추가,삭제 라고 레이블을 단다.
배열을 구성할 아이템 추가
Array Controller Attributes 선택하고 Inspector 화면에서 Object Controller 섹션에
- Mode : class
- Class Name : 배열을구성할클래스이름 추가, 나중에 이 클래스를 생성해서 추가하기 때문에, 진짜 클래스여야 함
실제배열클래스와 연결
여기서는 NSMutableArray와 연결하려고함.
- Array Controller Bindings 에서 Controller Contents > Content Array 섹션 선택
- “Bind To” 에서, NSMutableArray 가 선언된 클래스를 선택
- 여기서는 AppController를 선택
- Model Key Path 에서 NSMutableArray 변수의 이름을 추가
NSTableView의 컬럼과 연결
NSTableView에서 한컬럼을 선택 : 테이블뷰를 모두 선택하는게 아니라 테이블 뷰의 특정 컬럼을 선택하는 것을 주의.
NSTableView는 여러 레이어로 구성되어 있어서, 선택시 햇갈리지 않도록 주의가 필요함.
- 컬럼 선택후, Table Column Bindings을 선택
- Value 섹션에서 다시 Value 서브 섹션 선택
- Bind to에서 Array Controller 선택
- Model Key Path 에서 ImageItem 클래스에서 테이블 뷰에 추가하고 싶은 변수 이름을 작성
- 자동선택되도록 콤보박스에 추가되지는 않음.
- 나머지도 같은 과정으로 컬럼에 출력할 값을 추가함.
버튼에 기능을 부여
- “추가” 버튼에서 마우스 오른쪽 클릭 후 Array Controller을 선을 가져간다.
- 나타나는 메뉴 중에서 add:를 선택
- “삭제” 버튼에서 마우스 오른쪽 클릭 후 Array Controller을 선을 가져간다.
- 나타나는 메뉴 중에서 remove: 를 선택
Array Contrller 아이콘에서 마우스 오른쪽 클릭해서 나타나는 팝업 메뉴에서 기능이 제대로 연결되어 있는지 확인.
여기까지 하고 나면 작업 완료. 컴파일 후 실행 해서 제대로 처리 되는지 확인한다.
language/cocoa/arraycontroller.txt · 마지막으로 수정됨: 2024/04/23 22:44 저자 127.0.0.1