2014-11-08 65 views
7

我有一個NSTableView,顯示每行中的一些圖像和文本。我爲NSTableView啓用了多個選擇。我啓用拖動& Drop爲TableView排序或導出圖像。 現在我發現,當我選擇多個行並將它們拖到TableView上時,整行變爲藍色並保持藍色(選中狀態)。無法看到文字和圖像。 在XCode中,我收到此消息:NSTableView拖放選定的行覆蓋藍色的行佈局

佈局在調用後仍然需要更新 - [NSTableRowView佈局]。 NSTableRowView或其超類中的一個可能會覆蓋 - 佈局而不調用super。或者,在更新它的過程中,某些東西可能會弄髒佈局。這兩個都是Cocoa Autolayout中的編程錯誤。如果一些預Cocoa Autolayout類有一種稱爲佈局的方法,前者很可能會出現,但它應該是固定的。

該問題僅適用於多選。當啓用單個選擇它工作正常。

這裏有三個圖片來演示該問題:

圖片2:當拖動超過它得到完整的藍色;覆蓋其它佈局的構成

http://ekiwi.de/temp/stackoverflow/original2.png

圖3:在拖動後也沒找到谷歌搜索2天任何解決方案或暗示仍然完全藍色

http://ekiwi.de/temp/stackoverflow/original3.png

直到現在。也許這裏有人有提示?

+1

你有沒有得到這個地方?我有一個與NSOutlineView類似的問題。在我的情況下,我可以通過將高亮樣式更改爲源列表來解決該問題。我也在一個非常簡單的測試項目中重新創建了它,所以我懷疑這是一個Apple bug並且已經提交了一個Radar。 – 2014-12-02 12:29:35

+2

我也在我自己的應用程序中運行這個bug,它使用基於NSOutlineView的視圖。我唯一能補充的信息是,至少對我的應用來說,這個錯誤只發生在優勝美地,而不是小牛。加文,如果你的雷達仍然有這個測試項目,你會介意在某處發佈一個副本嗎? – 2015-01-26 21:27:59

+0

任何解決方案? – SpaceDog 2015-03-05 04:56:16

回答

1

我終於可以通過設置行視圖的selectionHighlightStyle來覆蓋藍色的選擇顏色。在我的NSTableRowView子類中的以下代碼做了訣竅:

- (NSTableViewSelectionHighlightStyle)selectionHighlightStyle 
{ 
    return NSTableViewSelectionHighlightStyleNone; 
} 

- (void)drawSelectionInRect:(NSRect)dirtyRect 
{ 
    [[NSColor redColor] set]; 
    NSRectFill(dirtyRect); 
}