2012-07-08 3 views
1

나는 테이블 뷰를 사용하는 법을 배우려고 노력해 왔으며 솔직히 조금이라도 붙어 있습니다. 제한된 수의 행 (예 : 최대 50 개)의 테이블 뷰를 사용하려고했습니다. 0 행으로 비어 있습니다. 그런 다음에 다음 행을 따라 뭔가를하고 싶었습니다.NSTableView를 로깅에 사용 하시겠습니까?

[self logMessage:@"Waiting for response"]; 

위의 텍스트와 함께 하단에 새 행을 삽입합니다. 이 의사 함수에 대한 다른 호출을 수행하는 경우 : 이전 행 아래에 또 다른 새 행이 삽입되어야 표시됩니다. 위의 한도에 도달하고 새 메시지를 삽입하면 가장 오래된 메시지를 제거하고 싶습니다. 이 모든 것은 스크롤 할 수 있으며 가장 최신 버전이 기본적으로 표시됩니다.

나는 이것을 할 올바른 일을보고 있습니까? 결국, 메인 윈도우 아래의 멋진 작은 서랍에 이걸 넣고 싶었는데, 필요한 경우 메인 메뉴에서 토글 할 수 있습니다. 하지만 내가 말했듯이, 나는 테이블 뷰를 올바르게 사용하는 법을 배울 수는 없지만 다른 객체와 똑같은 것처럼 보이지는 않습니다.

모든 예제 코드는 크게 감사하겠습니다!

+0

http://developer.apple.com/library/mac/#samplecode/TableViewPlayground/Introduction/Intro.html 및 [Table View 프로그래밍 가이드] (http://developer.apple.com/library/mac)를 참조하십시오./documentation/Cocoa/Conceptual/TableView /) –

답변

1

로그 뷰어는 UITableView의 읽기 전용 응용 프로그램이므로 기본 사항을 이해하면 로그 뷰어는 다소 직선적입니다. 테이블 뷰는 데이터 모델에 의존하여 표시해야하는 정확한 정보를 제공합니다.

NSMutableArray *logLines = [NSMutableArray array]; // <<== this goes into the init method 

-(void) addLogLine:(NSString*)line { 
    [logLines insertObject:line atIndex:0]; 
    while (logLines.count > 50) { 
     [logLines removeLastObject]; 
    } 
} 

:이처럼 "오버플로"줄을 제거하는 removeLastObject을 줄을 추가 insertObject:atIndex:를 사용 : NSMutableArray

"로그의 지난 50 선"에 대한 데이터 모델은 간단 할 수있다 이제 logLines을 테이블의 "모델"로 사용할 수 있습니다. 데이터 제공자는 logLines.count을보고 얼마나 많은 행이 있는지 알 수 있습니다. 테이블의 각 행의 내용은 logLines의 해당 색인에있는 객체가됩니다. 배열 요소를 UITableView에 표시하기 위해 작성해야하는 "상용구 코드"에 대해 자주 사용하는 iO 자습서의 UITableView 섹션을 살펴보십시오.

+0

이것은 iOS 프로젝트가 아니라 Mac에서 프로젝트입니다. 그럼에도 불구하고, 귀하의 의견을 보내 주셔서 감사합니다, 그것은 공정하게 이전 할 수 있어야합니다. 나는 그것을 줄 것이다. – Tiago

+0

당신의 생각은 효과가 있지만 NSMutableArray의 내용을 기반으로 NSTableView를 업데이트 할 수 없습니다. 참조 : http://stackoverflow.com/questions/11393195/nstableview-add-row-gives-empty-cells-what-am-i-doing-wrong – Tiago

+0

@loco 죄송합니다. NS 접두어에주의하지 않았습니다. 그것이 ios 프로젝트라고 생각합니다. 기본 아이디어는 동일해야합니다. – dasblinkenlight

관련 문제