2011-08-08 40 views
6

Tôi đang sử dụng đối tượng NSOutlineView để biểu diễn cấu trúc tệp và tôi nhận thấy rằng nó sẽ không thụt lề chính xác bất kỳ trẻ nào có thể mở rộng, mặc dù nó sẽ thụt lề cho trẻ em.Vấn đề thụt đầu dòng NSOutlineView

Dưới đây là một hình ảnh để hiển thị những gì tôi muốn nói:

NSOutlineView example

Trong ví dụ này, "AnotherFolder" là con của "folder2" chưa nó không thụt lề phù hợp với các tập tin thụt khác. Thật kỳ lạ, đứa trẻ "AnotherFile.java" của "AnotherFolder" không thụt lề chính xác (2 cấp độ trong).

Tôi đã thử đặt các thuộc tính như "indentationFollowsCells" thành vô ích. Điều này có vẻ như là nó rất đơn giản nhưng tôi không thể giải quyết nó.

Cảm ơn!

Edit: Một số thông tin thêm theo yêu cầu:

Tôi đang sử dụng giao thức NSOutlineViewDataSource cho việc thực hiện, đây là đoạn code liên quan đến rằng:

- (id)outlineView:(NSOutlineView *)outlineView objectValueForTableColumn:(NSTableColumn *)tableColumn byItem:(id)item { 
    return item; 
} 

- (id)outlineView:(NSOutlineView *)outlineView child:(NSInteger)index ofItem:(id)item { 
    NSMutableDictionary* dict; 
    if(item == nil) { 
     dict = fileTree; 
    } else { 
     dict = [((MyFile*) item) children]; 
    } 

    NSArray* keys = [dict allKeys]; 
    NSArray* sorted = [keys sortedArrayUsingSelector:@selector(compare:)]; 
    NSString* key = [sorted objectAtIndex:index]; 
    return [dict objectForKey:key]; 
} 

- (BOOL)outlineView:(NSOutlineView *)outlineView isItemExpandable:(id)item { 
    return [[item children] count] > 0; 
} 

- (NSInteger)outlineView:(NSOutlineView *)outlineView numberOfChildrenOfItem:(id)item { 
    if(item == nil) { 
     return [fileTree count]; 
    } 
    return [[item children] count]; 
} 
+1

Bạn chưa cung cấp bất kỳ chi tiết kỹ thuật nào. Bạn đang sử dụng Bindings hoặc giao thức NSOutlineViewDataSource? Nếu trước đây, hãy đăng mô tả * hoàn chỉnh * về các ràng buộc của bạn; nếu sau này, hãy đăng danh sách mã * hoàn chỉnh * của việc triển khai giao thức nguồn dữ liệu của bạn. –

+0

@Joshua điều chắc chắn, cập nhật bài đăng gốc – Gary

+0

Bạn có chắc chắn rằng nó không thụt lề * tất cả * trẻ em có thể mở rộng hay chỉ những người ở cấp độ 2? Điều gì xảy ra nếu bạn có các mục có thể mở rộng lồng nhau sâu? – jtbandes

Trả lời

6

Hãy thử thay đổi xem phác thảo của bạn từ một Nguồn chế độ xem phác thảo thành chế độ xem bình thường.

+0

thanks spudwaffle – Gary

+1

+1 Wow, cảm ơn vì điều này. Vấn đề này khiến tôi phát điên! Phải mất một thời gian để tìm ra bạn có nghĩa là phong cách nổi bật trong xây dựng giao diện ... nhưng tôi thấy nó cảm ơn. – regulus6633

Các vấn đề liên quan