2009-08-25 10 views
5

Things uygulamasında yapıldığı gibi aynı özel öğelerdeki davranışlara sahip olmak isterim.NSOutlineView öğesinin son öğeyi, bir Kenar Çubuğunun en alt bölümünde nasıl tutulur?

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

kenar çubuğu ağacında aynı işlevi gerçekleştirmek için herhangi bir şekilde bildiriniz: Ben Seyir defteri ve Çöp Kenar Çubuğu alt kısmında ürün anlamına gelir.

Özel "aralayıcı" ağaç öğesinin outlineView:heightOfRowByItem: yöntemiyle birlikte kullanılması gerektiğini hissediyorum. Bununla birlikte, görünür tüm öğelerin toplam yüksekliğini (gruplar arasındaki boşluk dahil) nasıl hesaplayacağımı bulamıyorum.

cevap

1

Grup stilindeki her kök öğesi için 8 piksel yükseklik ekleyerek çözümü kodlamaya karar verdim. Yani, kod şöyle görünür: herkese

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

Teşekkür destek için!

3

Sadece iki anahat görünümüne sahip olmayı deneyebilirsiniz: Sabit yüksekliğinden biri, süper görüntülerinin alt kısmına sabitlenmiş, diğerinin hemen üstündeki alt kısmı ile değişken yükseklikte diğeri. Sabit yükseklikli anahat görünümü, bu Kayıt Defterini ve Çöp öğelerini içerir ve değişken yükseklikte anahat görünümü diğerlerini içerecektir.

Bu zor kısmı, bu görünümü kaydırma görünümü ile güzelleştiriyor olabilir, ancak bunu yapabileceğinizi düşünüyorum. Onları tamamen yeniden boyutlandırılabilir bir NSView'a koyacağınızı ve kaydırma görünümünün belge görünümünü oluşturduğunuzu hayal ediyorum.

+0

+1. Bu şekilde çoğaltılan diğer listeleri (Hesaplar prefpane'deki Giriş Seçenekleri gibi) gördüm. – iKenndac

+0

Bununla birlikte, yalnızca kaydırma durumlarını ve 2 görüntülemeyi değil, girinti düzeyini, sonraki yanıtlayıcıları, bazı kısayol tuşlarını vb. De yönetmelisiniz. Soru hala açık :) – Stream

+0

Bunlar, üst düzey öğelerse giriş seviyesi değişmemelidir. Yine de cevaplayıcı zinciri hakkında iyi bir nokta. –

İlgili konular