Tôi hiện đang cố gắng sử dụng NSOutlineView dựa trên chế độ xem mới trong ứng dụng Cocoa của mình. Vì tôi không sử dụng các ràng buộc nên tôi đã triển khai tất cả các phương thức ủy quyền và nguồn dữ liệu được yêu cầu trong bộ điều khiển của mình.Các vấn đề phông chữ tiêu đề NSOutlineView dựa trên Xem
Trong trình tạo giao diện, tôi đã thêm NSOutlineView với bộ đánh dấu là SourceList và Chế độ nội dung được đặt thành Xem Dựa. Như vậy, đã có hai quan điểm ô trong bảng mặc định được cung cấp (một tế bào header với HeaderCell bộ như nhận dạng và một tế bào dữ liệu với DataCell bộ như định danh)
Đây là những gì nó trông giống như trong xây dựng giao diện, quan điểm ô tiêu đề hiển thị một cách chính xác một màu xám-xanh TextField trong khi quan điểm tế bào dữ liệu có một cái nhìn hình ảnh và một TextField với màu sắc và phông chữ cài đặt chính xác
để cung cấp các quan điểm, tôi sử dụng đoạn mã sau, để trở về một DataCell- xem hoặc một khung nhìn HeaderCell và thiết lập textField của ô tương ứng, dựa trên số nhận dạng tương ứng được đặt trong trình tạo giao diện.
- (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;
}
Chạy mọi thứ trông như sau.
Ai có thể cung cấp cho tôi các gợi ý, tại sao ô tiêu đề không in đậm, cũng không được tô màu chính xác khi được chọn?
Tuyệt vời, cảm ơn, điều này là chính xác những gì tôi đang tìm kiếm. Trong trường hợp người khác gặp sự cố, hãy sử dụng setFloatsGroupRows: NO để ngăn mục đầu tiên * nhảy * lên và xuống khi mở rộng và thu gọn theo [bài đăng này] (http: // stackoverflow.com/questions/6814620/strange-behavior-using-view-based-nsoutline-sourcelist) – BinaryBucks
Khi tôi đang ở đó và mọi thứ hiển thị chính xác, các công trình mã trên không thực sự hoạt động trôi chảy khi mở rộng/thu gọn một nhóm như nó là trường hợp trong ví dụ Trình tìm kiếm. Có allways một stuttering nhẹ nhưng đáng chú ý trong hoạt hình và tải CPU khá nặng, như thể xem là mới được phân bổ. Nếu tôi chỉ sử dụng makeViewWithIdentifer với một mã định danh duy nhất, sao cho mỗi ô là một ô tiêu đề (hoặc ô dữ liệu, không bị mờ), mọi thứ hoạt động trôi chảy. Bất kỳ gợi ý nào tại sao? – BinaryBucks
Vâng, toàn bộ tài sản floatsGroupRows chỉ bị phá vỡ cho các khung nhìn phác thảo. Chưa thấy vấn đề hiệu suất mà bạn mô tả. Có lẽ một hồi quy Core Animation từ một superview được hỗ trợ bởi lớp? Dunno. –