2009-08-25 5 views
5

Chciałbym mieć takie samo zachowanie specjalnych elementów, jak w aplikacji Rzeczy. Znaczy Logbook i Kosz pozycje w dolnej części paska bocznego:Jak zachować ostatni element drzewa w widoku NSOutlineView w dolnej części paska bocznego?

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

Proszę doradzić w dowolny sposób wdrożenia taką samą funkcjonalność w drzewie bocznego.

Uważam, że specjalny element drzewa "spacer" powinien być używany razem z metodą outlineView:heightOfRowByItem:.

Nie mogę jednak obliczyć całkowitej wysokości wszystkich widocznych elementów (łącznie z odstępem między grupami).

Odpowiedz

1

Zdecydowałem się na rozwiązanie kodu twardego, dodając 8 pikseli wysokości dla każdego elementu głównego w stylu grupy. Więc, kod wygląda następująco:

- (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); 
} 

Dzięki wszystkim za wsparcie!

3

Możesz spróbować po prostu mieć dwa widoki konspektu: jeden z ustalonej wysokości, przypięty do dolnej części ich podglądu, a drugi o zmiennej wysokości, z dnem tuż nad wierzchołkiem pierwszego. Widok konspektu o stałej wysokości zawierałby pozycje Dziennika i Kosz, a widok konspektu o zmiennej wysokości zawierałby wszystkie inne.

Podstępna część sprawiłaby, że ta gra byłaby przyjemna z widokiem przewijania, ale myślę, że mógłbyś to zrobić. Wyobrażam sobie, że umieściłbyś je oba w pełni skalowalnym NSView i uczynił widok dokumentu widoku przewijania.

+0

+1. Widziałem w ten sposób inne listy (takie jak element Opcje logowania w oknie dialogowym Konta). – iKenndac

+0

Należy jednak zarządzać nie tylko stanami przewijania i 2 widokami, ale także poziomem wcięć, kolejnymi respondentami, skrótami klawiszowymi itd. Pytanie wciąż jest otwarte :) – Stream

+0

Poziom wcięcia nie powinien się zmieniać, jeśli są to elementy najwyższego poziomu. Ale dobry punkt o sieci respondentów. –

Powiązane problemy