CPTreeController (капучино) - PullRequest
       16

CPTreeController (капучино)

2 голосов
/ 30 ноября 2011

Каков наилучший способ создания связывающего совместимого представления данных структуры в капучино?то есть своего рода CPTreeController

мой источник в настоящее время является объектом jSON (содержит объекты и массивы), и я хотел бы отобразить его в виде структуры, а также иметь возможность изменять его параметры / получать уведомления об изменениях,(После загрузки в CPTreeController мне не нужно сериализовать его обратно в jSON, я буду работать непосредственно с источником данных)

Затем:

  • Есть ли где-нибудь скрытый CPTreeController илипохожая библиотека готова к использованию?
  • Если я переписываю свой собственный источник данных, должен ли я писать все это с нуля, или я мог бы легко смешивать CPDictionaries и CPArrays для решения этой задачи?(помните, что это должно быть совместимо с привязками)

1 Ответ

1 голос
/ 30 ноября 2011

Поиск по источникам говорит, что нет скрытого CPTreeController, поэтому вы можете либо написать свою собственную реализацию CPTreeController и предоставить ее сообществу, либо реализовать протокол источника данных для конкретной модели, например, так:

- (int)outlineView:(CPOutlineView)theOutlineView numberOfChildrenOfItem:(id)theItem
{
    if (theItem == nil)
        theItem = rootNode;

    return [[theItem childNodes] count];
}

- (id)outlineView:(CPOutlineView)theOutlineView child:(int)theIndex ofItem:(id)theItem
{
    if (theItem == nil)
        theItem = rootNode;

    return [[theItem childNodes] objectAtIndex:theIndex];
}

- (BOOL)outlineView:(CPOutlineView)theOutlineView isItemExpandable:(id)theItem
{
    if (theItem == nil)
        theItem = rootNode;

    return [[theItem childNodes] count] > 0;
}

- (id)outlineView:(CPOutlineView)anOutlineView objectValueForTableColumn:(CPTableColumn)theColumn byItem:(id)theItem
{
    return [[theItem representedObject] valueForKey:"name"];
}
...