2013-03-25 24 views
5

Tôi đã đơn giản dọc NSSplitView và tôi không thể giữ kích thước của nó khi tôi đổi kích thước cửa sổ nhưng tôi muốn cho phép thay đổi kích thước của NSSplitView theo cách thủ công khi kéo thanh dọc chia hai chế độ xem.NSSplitView: làm thế nào để không thay đổi kích thước với cửa sổ nhưng chỉ trong "hướng dẫn" cách?

EDIT. Đây là mã tôi đã thêm và vì lý do nào đó tất cả đều sai: khung bên trái (sourceView) giữ nguyên kích thước trong khi thay đổi kích thước cửa sổ nhưng khung bên phải có ràng buộc bố cục tự động chính xác (hoạt động tốt mà không triển khai phương thức bên dưới) . Các NSSrollView là ngăn bên trái mà tôi wan 't để ở lại trong cùng một vị trí và xem khác có thể thay đổi kích thước với cửa sổ.

- (BOOL)splitView:(NSSplitView *)splitView shouldAdjustSizeOfSubview:(NSView *)subview 
{ 
    if ([subview class] == [NSScrollView class]) 
     return NO; 

    return YES; 

} 

Bất kỳ ai biết giải pháp nhanh để làm điều đó? Cảm ơn!

+0

bạn đã cố gắng thực hiện các phương pháp NSSplitView Đại biểu? – nkongara

+0

Có, xem các bình luận trong câu trả lời dưới đây. Cảm ơn! – Luca

Trả lời

0

Bạn cần triển khai NSSplitViewDelegate. Cụ thể, bạn cần đảm bảo rằng bạn trả lại NO cho -splitView:shouldAdjustSizeOfSubview:, điều này sẽ ngăn tự động thay đổi kích thước.

Vì bạn có ít nhất 2 bản xem trước trong mỗi chế độ xem phân tách, bạn sẽ cần phải xác định xem loại nào bạn không muốn di chuyển, vì vậy hãy trả lại NO chỉ dành cho nó và YES cho chế độ xem bạn muốn thay đổi. Vì vậy, ví dụ, nếu bạn có một danh sách nguồn, và bạn muốn nó không thay đổi ngoại trừ trong một thao tác thủ công, hãy trả lại NO cho danh sách nguồn và YES cho phía bên kia.

+0

Đây chính xác là những gì tôi đã làm nhưng vì lý do nào đó nó không hoạt động: khung bên trái vẫn giữ nguyên kích thước và điều này là ok nhưng vì một số lý do ngăn khác có hành vi lạ: Đôi khi việc thay đổi kích thước của nó là chính xác liên quan đến autolayout những hạn chế mà tôi đã đặt trước đó nhưng nếu tôi thay đổi kích thước nó một cái gì đó đi sai và các ràng buộc không được đáp ứng. – Luca

+0

Bạn có thể sửa đổi câu hỏi của mình để mô tả các ràng buộc bố cục tự động của mình không? Điều quan trọng là trả lời đầy đủ câu hỏi của bạn. – gaige

+0

Tôi cố gắng làm điều đó nhưng không dễ dàng vì tôi có một hệ thống phân cấp khung nhìn phức tạp. Điều kỳ lạ cũng là cửa sổ bên phải của tôi thay đổi kích thước chính xác khi kích thước của cửa sổ được thay đổi nhưng khi tôi thực hiện tất cả các phương pháp đi sai. Bây giờ tôi đăng bài thực hiện '- (BOOL) splitView: (NSSplitView *) splitView shouldAdjustSizeOfSubview: (NSView *) subview ' phương pháp và sau này hôm nay tôi cố gắng đăng tất cả mã bố trí – Luca

6

Trong Xcode 4.6, chế độ xem tùy chỉnh bên trái của chế độ xem chia dọc không phải là NSScrollView.

@synthesize leftView; 

- (BOOL)splitView:(NSSplitView *)splitView shouldAdjustSizeOfSubview:(NSView *)subview { 
    if (subview == leftView) return NO; 
    else return YES; 
} 
1

Hãy thử thiết lập hành vi xem mục của split như Sidebar

+0

Câu trả lời hay nhất cho đến nay –

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