0

NSOutlineView有一套可以使用的datasource. 显示我的数据没有问题,除了一个小细节:标签分支。

我需要在我的树中显示分支,这些分支只是作为对子元素进行分组的一种方式。说,我有一个“父”元素。在“父级”下,我将有一个名为“子级”的可扩展元素,当它展开时,所有子级都会显示。但元素“儿童”元素不是业务逻辑的一部分。

我知道它NSOutlineView不会保留它显示的数据,所以我用“Children”字符串.m在文件的开头创建了一个常量。问题是,如果我的结构包含很多父母,那么树的行为就会变得不稳定,因为每次我展开"Children"时,我都会有效地展开树中的所有"Children"

那么,我怎样才能将一个元素添加到树中,只是为了标记的目的,虽然它看起来一样,但不一样?

4

1 回答 1

1

我建议您在数据源内部创建一个模型,该模型与您希望在大纲中显示的内容的结构非常匹配。这具有易于理解的双重优势,并且在委托调用方面通常很有效。

例如,您的真实模型可能是书籍列表,但出于显示目的,您希望将它们分组为标题的第一个字母(A、B、C...)。在数据源委托中,您可以创建具有此结构的字典数组@{@"firstLetter":@"A", @"books":bookArray}.。然后,在委托方法中,您可以使用这个新数组作为您的模型。

当然,您需要管理这个内部模型,但这通常很简单。

于 2013-05-03T13:22:46.083 回答