2012-01-01 19 views
5

NSTreeController'a bağlı bir View tabanlı NSOutlineView var. Temsilcimde outlineView:isGroupItem: yöntemini uygulayana kadar her şey düzgün çalışıyor gibi görünüyor, daha sonra grup başlığı aniden gösterilmeyi durdurdu. BuGörünüm tabanlı NSTableView/NSOutlineView ve isGroupItem

enter image description here

gibi ben üzere NSOutlineView değiştirmek olsaydı o zaman cep tabanlı grup öğesi düzgün görünür doğruladı. Benzer davranış, NSTableView için de gözlenir. Bu problemle başka biri karşılaştı mı?

cevap

11

Çözüldü!

sütunu ile aynı tanımlayıcı ile görünümü konumlandırarak NSOutlineView tablodaki her bir hücre için bir görünüm oluşturmak göre, varsayılan görünümü, ben

- (NSView *)outlineView:(NSOutlineView *)outlineView 
    viewForTableColumn:(NSTableColumn *)tableColumn 
        item:(id)item { 
    if ([self outlineView:outlineView isGroupItem:item]) { 
     NSString *vId = [[[outlineView tableColumns] objectAtIndex:0] identifier]; 
     return [outlineView makeViewWithIdentifier:vId owner:self]; 
    } 
    return [outlineView makeViewWithIdentifier:[tableColumn identifier] owner:self]; 
} 

Görünüşe NSOutlineView temsilci aşağıdaki yöntemi uygulamak zorunda çıktı . Bununla birlikte, bir grup kalemi/grup satırı söz konusu olduğunda, bu satırla ilişkili tableColumm yoktur, bu nedenle görünüm sıfırdır ve görünmez.

Apple'ın TableViewPlayground sample project ile oynamak gerçekten çok yardımcı oldu! Şiddetle tavsiye!

+0

Ayrıntılı güncelleme için teşekkürler. –

+0

+1 TableViewPlayground referansı için – rluba

+0

Neden "publicView: viewForTableColumn: item:" [resmi 'NSOutlineViewDelegate 'belgelerinde] (https://developer.apple.com/library/mac/documentation/cocoa/reference/ NSOutlineViewDelegate_Protocol/Reference/Reference.html) – zakdances