2014-11-08 18 views
7

Tôi có một NSTableView hiển thị một số hình ảnh và văn bản trong mỗi hàng. Tôi đã kích hoạt nhiều lựa chọn cho NSTableView. Và tôi đã bật Drag & Thả cho TableView để sắp xếp hoặc xuất hình ảnh. Nó bây giờ xảy ra rằng, khi tôi chọn nhiều hơn một hàng, và kéo chúng trên TableView, toàn bộ hàng có màu xanh và vẫn màu xanh (được chọn). Không thể nhìn thấy văn bản và hình ảnh. Trong XCode, tôi nhận được thông báo này:NSTableView Kéo và thả các hàng đã chọn ghi đè bố cục hàng màu xanh lam

Bố cục vẫn cần cập nhật sau khi gọi - [Bố cục NSTableRowView]. NSTableRowView hoặc một trong các siêu lớp của nó có thể bị ghi đè lên lớp phủ mà không cần gọi siêu. Hoặc, một cái gì đó có thể có bố trí bẩn ở giữa cập nhật nó. Cả hai đều là lỗi lập trình trong Cocoa Autolayout. Trước đây là khá có khả năng phát sinh nếu một số pre-Cocoa Autolayout lớp có một phương pháp gọi là bố trí, nhưng nó phải được cố định.

Sự cố chỉ tồn tại đối với nhiều lựa chọn. Khi kích hoạt lựa chọn duy nhất nó hoạt động tốt.

Dưới đây là ba hình ảnh để chứng minh vấn đề:

Ảnh 2: Khi kéo qua nó được hoàn thành màu xanh; trọng các thành phần bố trí khác

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

Hình 3: Sau khi Kéo nó vẫn hoàn toàn màu xanh

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

Cho đến bây giờ tôi đã không tìm thấy bất kỳ giải pháp hay gợi ý bởi googling hai ngày. Có lẽ ở đây ai đó có một gợi ý?

+1

Bạn có nhận được bất cứ đâu với điều này không? Tôi có một vấn đề tương tự với NSOutlineView. Trong trường hợp của tôi, tôi có thể giải quyết vấn đề bằng cách thay đổi kiểu đánh dấu thành danh sách nguồn. Tôi cũng đã tái tạo nó trong một dự án thử nghiệm cực kỳ đơn giản vì vậy tôi nghi ngờ đây là một lỗi của Apple và đã đệ trình một Radar. –

+2

Tôi cũng đã chạy qua lỗi này trong ứng dụng của riêng tôi, sử dụng chế độ xem dựa trên NSOutlineView. Chỉ thêm một chút thông tin tôi có thể thêm là, đối với ứng dụng của tôi ít nhất, lỗi này chỉ xảy ra trên Yosemite, và không phải Mavericks. Gavin, nếu bạn vẫn có dự án thử nghiệm xung quanh từ radar của mình, bạn có phiền khi đăng một bản sao ở đâu đó không? –

+0

bất kỳ giải pháp cho điều này? – SpaceDog

Trả lời

1

Cuối cùng tôi cũng có thể ghi đè màu lựa chọn màu xanh bằng cách đặt selectionHighlightStyle của chế độ xem hàng. Mã sau đây trong phân lớp NSTableRowView của tôi đã thực hiện thủ thuật:

- (NSTableViewSelectionHighlightStyle)selectionHighlightStyle 
{ 
    return NSTableViewSelectionHighlightStyleNone; 
} 

- (void)drawSelectionInRect:(NSRect)dirtyRect 
{ 
    [[NSColor redColor] set]; 
    NSRectFill(dirtyRect); 
} 
Các vấn đề liên quan