2010-12-06 4 views
1

저는 Objective-C 및 Cocoa 프로그래밍에 익숙하지 않았습니다. (수년 전 다른 플랫폼에서 C/C++ 개발의 배경에서 왔습니다.) 반복적으로 (즉, X 초마다) 원격 데이터를 다운로드하고, 구문 분석하고, NSArray에 정렬/필터링하고, NSTableView에 데이터를 표시/업데이트하는 응용 프로그램을 작성하고 있습니다. 몇 권의 책과 많은 Apple OS X Reference 자료를 읽은 다음 실험을하면서 데이터로 NSTableView를 실제로 업데이트한다는 것을 제외하면 모든 것을 구현할 수있었습니다 (원격 데이터 다운로드, 구문 분석/필터 논리, 메모리 내 저장소 등). .Interface Builder에서 생성 된 NSTableView에 프로그래밍 방식으로 액세스하는 방법은 무엇입니까?

MVC 개념을 따르는 응용 프로그램을 어떻게 배치해야하는지 또는 인터페이스 작성기의 실제 코드 생성 기능이 부족한 것이 아닌지 확실하지 않은데 잘 모르겠습니다. 인터페이스 작성기에서 만든 NSTableView에 프로그래밍 방식으로 액세스/조작 할 수있는 방법을 결정하는 것 같습니다.

인터페이스 작성기에서 NSArray 기반 개체의 NSObject 인스턴스를 드래그하여 NSTableView의 Outlet/datasource를 연결할 수 있지만 NSArray 기반 개체의 다른 인스턴스가 생성됩니다. NSTableView를 프로그래밍 방식으로 선언되고 인스턴스화 된 기존 객체에 연결). 마찬가지로 NSTableView의 데이터 소스를 프로그래밍 방식으로 설정하려고 생각했지만 프로그램을 통해 프로그래밍 방식으로 .xib/.nib 파일에 저장된 NSTableView 객체를 참조 할 수있는 방법을 결정할 수 없었습니다. Interface Builder에서 NSTableView의 Tag 값을 설정 한 후 viewWithTag: 메쏘드를 호출 할 객체를 결정하십시오.

모든 제안, 조언 또는 지침을 주시면 감사하겠습니다. 이것은 매우 단순한 것들 중 하나와 같은 느낌입니다. (그리고 일단 제 앞에 서서 작업하면 더 많은 의미를 갖게 될 것입니다.)하지만 시작점/예제 작업을 할 수없는 것 같습니다.

+1

클래스의 헤더 파일에 IBOutlet NSTableView가 있습니까? – BoltClock

+2

초보자 iPhone 개발 도서 중 하나를 구매할 것을 권장합니다. 머리말 작성, IBOutlets 할당, IB 실행, IBOutlets에 GUI 첨부 등 ... – KevinDTimm

+0

... 또는 적어도 Introduction documentation Apple은 무료로 제공하고 있으며, developer.apple.com 페이지에서 링크되어 있습니다. –

답변

2

테이블의 컨트롤러 클래스에있는 인스턴스 변수를 인터페이스 작성기의 테이블에 연결해야합니다. 다음과 같이 클래스의 테이블을 선언하십시오.

IBOutlet NSTableView* myTable; 

... 

@property (nonatomic, retain) IBOutlet NSTableView* myTable; 

그리고 반드시 합성하십시오.

인터페이스 빌더의 정보 창의 연결 탭에서 컨트롤러의 새 콘센트를 테이블에 연결하십시오. 그런 다음 XIB에서보기가로드되면이 콘센트가 연결됩니다.

일부 도움이 되길 바랍니다.

+0

OK, 그래서'IBOutlet NSTableView * myTable; '을 포함하도록 클래스를 업데이트하고 그것을 합성합니다. Interface Builder에서 Object 위로 드래그하여 Class Identity를 클래스에 설정합니다. 그런 다음 객체의 myTable Outlet -> NSTableView에서 연결을 드래그합니다. 나는 이것이 같은 문제를 안고 있다고 생각한다.NSTableView가 이제 연결되었지만 .xib/.nib (NSTableView에 표시하려는 데이터가 들어있는 프로그래밍 방식으로 인스턴스화 된 객체가 아닌)에서 인스턴스화 된 객체에 연결 되었습니까? – DAz

+0

별도의 XIB를 사용하는 경우 "파일 소유자"개체를 클래스에 설정하고 콘센트를 여기에 연결해야합니다. 한 XIB의 모든 것을 사용하고 있다면, 이미 액세스 할 수있는 콘센트가 있는지 확인하고 필요에 따라 콘센트의 계층을 만듭니다. 이 두 번째 경우의 최상위 레벨은 앱 위임자에 포함될 가능성이 큽니다. – slycrel

관련 문제