2009-08-25 6 views
5

Ich möchte das gleiche Verhalten von speziellen Elementen haben, wie es in der Things-Anwendung getan wird. Ich meine Logbuch und Trash Elemente im unteren Teil der Seitenleiste:Wie behalte ich den letzten Baumeintrag von NSOutlineView im unteren Bereich einer Sidebar?

Logbook and Trash items are in the most bottom http://tinyurl.com/lhctza

Bitte geben Sie jede mögliche Weise, die gleiche Funktionalität in der Seitenleiste Baum zu implementieren.

Ich glaube, dass spezielle 'spacer' Baum Item zusammen mit outlineView:heightOfRowByItem: Methode verwendet werden sollte.

Ich kann jedoch nicht finden, wie die Gesamthöhe aller sichtbaren Elemente (einschließlich Leerzeichen zwischen Gruppen) berechnet wird.

Antwort

1

Ich habe beschlossen, die Lösung durch Hinzufügen von 8 Pixeln Höhe für jedes root Element im Gruppenstil fest zu codieren. So sieht der Code wie folgt aus:

- (CGFloat)outlineView:(NSOutlineView *)ov heightOfRowByItem:(id)item; 
{ 
    if (![item isSpacer]) return [ov rowHeight]; 

    static const CGFloat ADDITIONAL_SPACE = 8.0f; 
    NSUInteger numberOfRootGroups = 2; 
    CGFloat heightOfRows = [ov rowHeight] * ([ov rowForItem:item] + 1) 
     + ADDITIONAL_SPACE * numberOfRootGroups; 
    CGFloat heightOfSidebar = [[ov superview] frame].size.height; 
    return MAX(0.0f, heightOfSidebar - heightOfRows); 
} 

Danke an alle für die Unterstützung!

3

Sie könnten versuchen, einfach zwei Umrissansichten zu haben: Eine mit fester Höhe, am unteren Rand der Superansicht, und die andere mit variabler Höhe, deren Unterseite unmittelbar über der ersten liegt. Die Umrissansicht mit fester Höhe enthält diese Logbuch- und Papierkorbelemente, und die Umrissansicht mit variabler Höhe enthält alle anderen Elemente.

Der schwierige Teil wäre es, dieses Spiel mit einer Bildlaufansicht schön zu machen, aber ich denke, Sie könnten es tun. Ich kann mir vorstellen, dass Sie beide in eine NSA-Ansicht mit veränderbarer Größe einfügen und diese in der Dokumentansicht der Bildlaufansicht anzeigen.

+0

+1. Ich habe andere Listen gesehen (wie das Element "Anmeldeoptionen" im Prepane-Menü "Accounts"), die auf diese Weise repliziert wurden. – iKenndac

+0

Sie sollten jedoch nicht nur scrollen Status und 2 Ansichten, sondern Einrückungsebene, nächste Responder, einige Hot-Keys etc. Frage ist noch offen :) – Stream

+0

Einrückung sollte nicht ändern, wenn diese Elemente auf der obersten Ebene sind. Guter Punkt über die Responder-Kette, obwohl. –