我目前正在嘗試在我的Cocoa應用程序中使用新的基於視圖的NSOutlineView。由於我沒有使用綁定,所以我在我的控制器中實現了所有必需的委託和數據源方法。基於視圖的NSOutlineView標題單元格字體問題
在Interface Builder我添加了一個NSOutlineView設置爲SOURCELIST並設置爲查看基於內容模式突出顯示。因此,有提供兩個缺省表格單元視圖(與HeaderCell集作爲標識符和與DATACELL組作爲標識符的一個數據小區的一個標題單元格)
這就是它看起來像在界面生成器,頭單元格的觀點正確顯示灰藍色的TextField而數據單元的觀點具有圖像視圖和文本字段與正確顏色和字體設置
爲了提供的意見,我使用下面的代碼,返回一個DataCell-視圖或HeaderCell視圖和集合根據界面生成器中設置的相應標識符,相應單元格的textField。
- (NSView *)outlineView:(NSOutlineView *)outlineView
viewForTableColumn:(NSTableColumn *)tableColumn
item:(id)item {
NSTableCellView *result = nil;
if ([item isKindOfClass:[NSMutableDictionary class]]) {
result = [outlineView makeViewWithIdentifier:@"HeaderCell" owner:self];
id parentObject = [outlineView parentForItem:item] ? [outlineView parentForItem:item] : groupedRoster;
[[result textField] setStringValue:[[parentObject allKeys] objectAtIndex:0]];
} else {
result = [outlineView makeViewWithIdentifier:@"DataCell" owner:self];
[item nickname] ? [[result textField] setStringValue:[item nickname]] : [[result textField] setStringValue:[[item jid] bare]];
}
return result;
}
運行它看起來如下所示。
任何人都可以提供提示,爲什麼選擇時標題單元既不是粗體也不是正確的顏色?
很好,謝謝發現,這正是我一直在尋找。如果有人遇到問題,請根據[本文](http:// stackoverflow。)展開和摺疊時使用setFloatsGroupRows:NO來防止第一個組項目*跳躍*上下。COM /問題/ 6814620 /奇怪的行爲 - 使用 - 視圖 - 基於nsoutline-SOURCELIST) – BinaryBucks
雖然我現在它是一切正確顯示上面的代碼工作並沒有真正流利工作展開/摺疊一羣喜歡它,當是例如發現者。在動畫中總會有輕微但明顯的停頓,並且CPU負載很重,就好像視圖是新分配的一樣。如果我只用一個標識符來使用makeViewWithIdentifer,那麼每個單元格都是一個標題單元格(或數據單元格,它不會馬上),一切都很流暢。任何暗示爲什麼? – BinaryBucks
是的,整個floatsGroupRows屬性剛剛爲大綱視圖斷開。沒有看到你描述的性能問題。也許是來自層級支持的超級視圖的Core Animation迴歸?不知道。 –