2014-11-17 19 views
6

Theo tài liệu trên NSSplitViewControllers, NSSplitView được liên kết sử dụng NSSplitViewController làm đại biểu của nó. Cụ thể trong tài liệu hướng dẫn, "Bộ điều khiển chia tách đóng vai trò là đại biểu của đối tượng chia tách của nó (đối tượng quản lý các ngăn). Nếu bạn ghi đè phương thức ủy quyền xem phân tách, ghi đè của bạn phải gọi là siêu."NSSplitViewController trong OSX 10.10 sử dụng Xcode 6

Tôi đã triển khai một NSSplitViewController trong trình tạo giao diện và gán cho nó một lớp. Tuy nhiên, không ai trong số các delegate splitView được gọi. Ngoài ra, nếu tôi chỉ làm một cái gì đó như nhổ người phân chia các delegate [NSLog (@ "% @", self.splitView.delegate); ], kết quả là "null". Tuy nhiên, nếu tôi giao cho đại biểu hoặc trong IB bản thân (bằng cách kéo các cửa hàng đại biểu đến NSSplitViewController) hoặc bên trong mã ([self.splitView setDelegate: tự];), tôi nhận được lỗi sau:

An uncaught exception was raised
SplitViewController's splitView is unable to use autolayout because the SplitViewController overrides an incompatible delegate method.

Tôi hoàn toàn lúng túng.

Trả lời

17

Nếu đại biểu của chế độ xem chia nhỏ thực hiện một trong các phương pháp sau, nó trở nên không tương thích với bố cục tự động.

splitView:constrainMinCoordinate:ofSubviewAt: 
splitView:constrainMaxCoordinate:ofSubviewAt: 
splitView:resizeSubviewsWithOldSize: 
splitView:shouldAdjustSizeOfSubview: 

https://developer.apple.com/library/mac/releasenotes/AppKit/RN-AppKitOlderNotes/#10_8AutoLayout


Và bởi vì NSSplitViewController đòi hỏi việc sử dụng bố trí tự động (được đề cập trong tài liệu), các phương pháp này không phù hợp với NSSplitViewController và không nên được thực hiện trong một lớp con.

+2

CẢM ƠN BẠN! Ban đầu tôi vô cùng bối rối về điều này vì tôi nghĩ rằng các lựa chọn duy nhất là thấp (250) và cao (750), và khi tôi làm điều đó, tôi đã không nhận được hành vi mà tôi mong đợi. Bằng cách thay đổi subview 0 giữ mẫu thành 260 và để lại subview 1 giữ mẫu ở 250, tôi đã nhận được chính xác những gì tôi đã cố gắng để làm. Nhiều đánh giá cao! –

+0

Cảm ơn! Thông tin này không được viết trong tài liệu ở bất cứ đâu! – b123400

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