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
윈도우 리소스
Array Controller Attributes 선택하고 Inspector 화면에서 Object Controller 섹션에
여기서는 NSMutableArray와 연결하려고함.
NSTableView에서 한컬럼을 선택 : 테이블뷰를 모두 선택하는게 아니라 테이블 뷰의 특정 컬럼을 선택하는 것을 주의.
NSTableView는 여러 레이어로 구성되어 있어서, 선택시 햇갈리지 않도록 주의가 필요함.
Array Contrller 아이콘에서 마우스 오른쪽 클릭해서 나타나는 팝업 메뉴에서 기능이 제대로 연결되어 있는지 확인.
여기까지 하고 나면 작업 완료. 컴파일 후 실행 해서 제대로 처리 되는지 확인한다.