2017-01-16 17 views
7

Để ẩn chế độ xem phụ trong UIStackView, tốt hơn là đặt isHidden thành true hoặc sử dụng removeArrangedSubview và xóa chế độ xem phụ khỏi phụ huynh Stackview thay thế?Ẩn chế độ xem phụ trong UIStackview tại ios

Tôi đang sử dụng Stackview để sắp xếp các UIElements của mình trong ô tableView. Tôi hiện có một StackView cha và một childStackview sắp xếp bên trong. Chế độ xem con cần được hiển thị hoặc ẩn dựa trên điều kiện. Tôi đang đặt thuộc tính isHidden của chế độ xem con thành true khi điều kiện chuyển thành true.

Khi tôi cuộn và các ô mới trở nên hiển thị Tôi nhận được các thông báo sau trong bảng điều khiển. Ứng dụng không bị lỗi.

NSLayoutConstraint: 0x600000093470 'UISV-canvas-kết nối' UIStackView: 0x7fd4527201b0.top == UILabel:. 0x7fd452720370'Day Tắt - Nghỉ ngơi và ngủ ... 'đầu (hoạt động)

Thực hiện một breakpoint tượng trưng tại UIViewAlertForUnsatisfiableConstraints để nắm bắt điều này trong trình gỡ lỗi. Các phương pháp trong danh mục UIConstraintBasedLayoutDebugging trên UIView được liệt kê trong <UIKit/UIView.h> cũng có thể hữu ích. [LayoutConstraints] Không thể đồng thời đáp ứng các ràng buộc. Có lẽ ít nhất một trong những ràng buộc trong danh sách sau đây là một trong những điều bạn không muốn.
Hãy thử điều này:

  1. xem xét từng chế và cố gắng tìm ra mà bạn không mong đợi;
  2. tìm mã đã thêm ràng buộc hoặc ràng buộc không mong muốn và sửa lỗi đó. ( "", "", "", "", "", "", "" )

sẽ cố gắng để khôi phục lại bằng cách phá vỡ chế

+1

Giống như hầu hết các câu hỏi về cách tiếp cận nào tốt hơn, câu trả lời sẽ phụ thuộc vào tình huống cụ thể của bạn. Bạn có thể cung cấp thêm một vài chi tiết nữa không? – Jim

+0

Cảm ơn bạn Jim, tôi đã thêm một ParentStackView và ChildStackview vào nhau. Tôi có một nhu cầu để ẩn childstackview dựa trên một điều kiện. Khi tôi đặt isHidden của stackview con thành true, tôi nhận được thông báo sau trong nhật ký console của xcode. Nó không sụp đổ các ứng dụng mặc dù. Tôi nhận được lỗi này Không thể đồng thời đáp ứng các ràng buộc. Có lẽ ít nhất một trong những ràng buộc trong danh sách sau đây là một trong những điều bạn không muốn.\t Sẽ cố khôi phục bằng cách phá vỡ ràng buộc – jay

+0

Jay, hãy tiếp tục và chỉnh sửa câu hỏi của bạn và thêm chi tiết đó vào đó trước khi mọi người downvote nó vì không có bất kỳ chi tiết nào. Ngoài ra, giả sử khung nhìn ngăn xếp của con biến mất (bạn ẩn nó hoặc sử dụng removeArrangedSubview). Bạn có bao giờ muốn nó trở lại? – Jim

Trả lời

8

Để trả lời câu hỏi đầu tiên của bạn, nếu bạn không cần phải bỏ ẩn tiểu sử, điều hợp lý nhất cần làm là xóa nó bằng cách sử dụng removeArrangedSubview(UIView). Như bạn có thể biết, chế độ xem ngăn xếp sẽ tự động cập nhật bố cục của nó bất cứ khi nào các lượt xem được thêm, xóa, chèn hoặc ẩn/bỏ ẩn.

Cảnh báo bạn nhận được trong bảng điều khiển về các ràng buộc có thể hoặc có thể không liên quan đến bất kỳ điều gì bạn đã triển khai cho chế độ xem phụ ngay bây giờ. Bạn đã đề cập đến nó bởi vì bạn nghĩ rằng nó có thể liên quan?

Hy vọng điều đó sẽ hữu ích.

+0

Cảm ơn bạn Jim, nó giúp để có được một sự rõ ràng khái niệm. Tôi nghĩ rằng họ có liên quan khi tôi bắt đầu nhìn thấy những tin nhắn này trong giao diện điều khiển sau khi tôi thực hiện stackview. – jay

+0

Bạn được chào đón, Jay. Vì bạn mới hỏi câu hỏi quanh đây (chào đón, nhân tiện), hãy tiếp tục và đánh dấu câu trả lời của tôi là câu trả lời đúng nếu nó giúp bạn và bạn hài lòng với nó. Nếu bạn tiếp tục gặp sự cố với các ràng buộc xung đột, hãy đăng câu hỏi khác và nhớ bao gồm các chi tiết quan trọng. Những vấn đề khó khăn đó có thể thực sự phức tạp để giải quyết. – Jim

+0

đã hoàn tất !, tôi đã đánh dấu câu trả lời. Và các lỗi ràng buộc đã xuất hiện vì một hình ảnh không nằm trong hình ảnh. Khi tôi đã sửa các lỗi ràng buộc đó cũng biến mất. – jay

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