2012-05-19 2 views
0

Apple의 Mail 앱에서 왼쪽의 개요보기에서받은 편지함 또는 폴더가 계층 구조로 표시되지만 폴더 또는 전자 메일의 전자 메일은 전혀 표시되지 않습니다.아웃 라인보기에서 특정 노드를 표시하지 않는 방법은 무엇입니까?

이 기능을 재현하고 싶습니다.

개요 컨트롤러에 연결된 개요보기가 있습니다. 객체 (노드)가 트리 컨트롤러에 추가되고 개요보기에 표시됩니다. 어떤 물체가 나타나지 않게하려면 어떻게합니까? 특히, 사용자 지정 개체의 인스턴스를 포함하는 폴더 노드가 있습니다. Mail.app에서와 마찬가지로, 개요보기에서 폴더 만 표시하고 다른보기에 표시되는 사용자 지정 개체를 갖게됩니다.

요청에 따라 일부 컨트롤러 코드. 나는 여기 개요보기에서 선택되는 folderNode에 노드를 추가하고 :

indexPath = [treeController selectionIndexPath]; 
indexPath = [indexPath indexPathByAddingIndex:[[[[treeController selectedObjects] objectAtIndex:0] children] count]];//want to insert the new node at the end of the folder node's array of children 
    ... 
[treeController insertObject:customObjectNode atArrangedObjectIndexPath:indexPath]; 
NSLog(@"No. of items selected in tree controller/outline view is %i",[[treeController selectedNodes] count]); //if the folderNode is a leaf, this gives 0, i.e. no selection 

// if the folderNode is not a leaf, the added child automatically becomes selected by NSOutlineView. In that case I keep its parent selected (the folder) so the next customObjectNode can be added 
[self selectParentFromSelection];//however this method will then do nothing because at this point nothing is selected. Now this whole paragraph of code cannot be repeated because nothing is selected so the first line of code doesn't work. 

답변

0

당신은 아이들에게 계속해야하는 다른 나무 컨트롤러를 사용하고 있습니까?

그렇지 않은 경우 폴더 노드가 YES에서 -isLeaf (및 childNodes 키는 nil) 만 반환하면됩니다.

+0

다른 트리 컨트롤러가 없지만 배열 컨트롤러를 사용하여 테이블 뷰에 사용자 지정 개체를 표시하고 있습니다. 불행히도, 폴더 노드를 리프로 설정 한 후 트리 컨트롤러를 통해 사용자 지정 개체를 삽입하면 트리 컨트롤러에서 아무것도 선택되지 않습니다. [[treeController selectedNodes] count]는 0을 반환합니다. 프로그래밍 방식으로 아무것도 선택할 수 없습니다. 이로 인해 내 코드가 손상되었습니다. 사용자 지정 개체는 UI에서 선택한 후에 만 ​​폴더 노드에 추가 할 수 있습니다. 또한, childNodes가 nil을 반환하도록 설정하는 방법을 확인해 주시겠습니까? 그렇게 할 때 아무런 차이가 없습니다. 고마워. –

+0

"트리 컨트롤러를 통해 사용자 정의 객체 삽입"이란 무엇을 의미합니까? 컨트롤러 코드를 올리시겠습니까? – paulmelnikow

+0

혼란을 드려 죄송합니다. 테이블보기에 표시하려고하는 정보가있는 노드를 의미합니다. Mail.app과의 유추를 계속하려면 내 "사용자 지정 개체"가 전자 메일 메시지입니다. 저는 Apple의 SourceView 예제에서 BaseNode.m 파일을 사용했고, 폴더 노드 (@interface FolderNode : BaseNode)는 폴더 (//interface customObjectNode : BaseNode). 위의 관련 코드를 게시했습니다. 다른 것이 있으면 알려주세요. 다시 한번 감사드립니다. –