Cảnh báo Xcode Storyboard: Các mục tham chiếu ràng buộc bị tắt trong cấu hình hiện tại. Tắt ràng buộc này trong cấu hình hiện tại


146

Cảnh báo này xảy ra trong Xcode 6.1. Bất cứ ai cũng có ý tưởng cảnh báo này có ý nghĩa gì và điều gì sẽ xảy ra với nó? Cảm ơn nhiều!

Dưới đây là một ảnh chụp màn hình với các cảnh báo được mở trong mã nguồn "

nhập mô tả hình ảnh ở đây

Làm thế nào để tìm ra ràng buộc nào gây ra cảnh báo? Xcode không cho bạn biết ràng buộc nào là vấn đề.

nhập mô tả hình ảnh ở đây


@wumm vâng, ứng dụng có thể được xây dựng và chạy thành công, tôi chỉ lo lắng rằng một số vấn đề tiềm ẩn có thể xảy ra bằng cách nào đó mà tôi chưa gặp.
Zhihao Yang

7
Lưu ý rằng nói chung vấn đề này là do: bạn có một mục chưa được cài đặt, nhưng, nó có các ràng buộc vẫn được cài đặt. Nói chung, tìm mục chưa cài đặt và đối với tất cả các ràng buộc của nó, đánh dấu chúng chưa được cài đặt.
Fattie

@Fattie Vui lòng chỉnh sửa câu trả lời được chấp nhận với lý do chính này. Cảm ơn
Milan K Familya

Câu trả lời:


431

Cảnh báo này có thể gây khó chịu và xảy ra kể từ Xcode 6.1.1. Vấn đề chính là bạn không thể dễ dàng tìm thấy các ràng buộc được tham chiếu bằng cách nhấp vào cảnh báo. Tôi đoán đây là một lỗi và sẽ được khắc phục sớm hay muộn.

Tuy nhiên, trong thời gian chờ đợi, bạn có thể sử dụng cách giải quyết nhỏ này:

Bước 1: Phát hiện cảnh báo khó chịu

Cảnh báo gây phiền nhiễu

Bước 2: Phải / Ctrl-Click vào cảnh báo, chọn Reveal in Log😨

nhập mô tả hình ảnh ở đây

Bước 3: Chiêm ngưỡng vẻ đẹp của đoạn trích nhật ký sau:

... snip ...
/Devel/MyCrippledAppNG/MyCrippledApp/Main_iPad.storyboard:Dlb-cb-nWC: warning: Constraint referencing items turned off in current configuration. Turn off this constraint in the current configuration.
/Devel/MyCrippledAppNG/MyCrippledApp/Main_iPad.storyboard:6Ze-mO-v5N: warning: Constraint referencing items turned off in current configuration. Turn off this constraint in the current configuration.
/Devel/MyCrippledAppNG/MyCrippledApp/Main_iPad.storyboard:9av-xw-u1o: warning: Constraint referencing items turned off in current configuration. Turn off this constraint in the current configuration.
/Devel/MyCrippledAppNG/MyCrippledApp/Main_iPad.storyboard:RPt-Uf-vaZ: warning: Constraint referencing items turned off in current configuration. Turn off this constraint in the current configuration.
/Devel/MyCrippledAppNG/MyCrippledApp/Main_iPad.storyboard:Rnc-4M-7jV: warning: Constraint referencing items turned off in current configuration. Turn off this constraint in the current configuration.
/Devel/MyCrippledAppNG/MyCrippledApp/Main_iPad.storyboard:epJ-D9-KEF: warning: Constraint referencing items turned off in current configuration. Turn off this constraint in the current configuration.
/Devel/MyCrippledAppNG/MyCrippledApp/Main_iPad.storyboard:4HC-Gu-01w: warning: Constraint referencing items turned off in current configuration. Turn off this constraint in the current configuration.
... snip ...

Hmmm ... đây là gì ...?

hấp dẫn

Bước 4: Hãy ném nó vào thanh tìm kiếm dự án ...

Tìm kiếm

Yep, bạn đoán đúng. Nhấp vào nó.

Bước 5: OMG! Tận hưởng thêm vài phút năng suất cho đến khi Apple sửa lỗi khó chịu này. 😎

wheeee


Cho năm 2016 ...

  • Nếu bạn không thể lấy nó với 'Hiển thị trong Nhật ký', hãy hiển thị Trình điều hướng Báo cáo. (Đó là tab ngoài cùng bên phải trên cột ngoài cùng bên trái.) Đi sâu vào kết quả xây dựng ở đó. Điều đó sẽ hiển thị nhật ký xây dựng, bao gồm ID ràng buộc. lịch sự xây dựng

nhập mô tả hình ảnh ở đây

nhập mô tả hình ảnh ở đây

  • Lưu ý rằng đối với Xcode ngày 5/2016, thật khó chịu khi bạn phải thoát và khởi động lại Xcode để xóa cảnh báo này trong một số trường hợp.

  • Lưu ý rằng thật khó hiểu, lỗi tương tự có thể do một vấn đề không liên quan (đây có vẻ là lỗi của Apple hoặc sử dụng ngôn ngữ lỗi kém): nếu bạn có IBInspectablecác mục và tình cờ đổi tên chúng trong các tệp Swift của bạn. Xcode không xóa tên cũ UserDefinedR nbAttribut cho bạn. Chỉ cần nhấp vào "Thanh tra danh tính" (mục 3 trên bảng bên phải) và xóa các mục dud.

Cho năm 2017 ...

  • Một nguyên nhân phổ biến khác, và thực sự đơn giản hơn của vấn đề. Nếu bạn tình cờ hủy cài đặt hủy cài một mục: Khi viết, rất đơn giản, Xcode không biết tự động gỡ cài đặt bất kỳ ràng buộc nào dẫn đến mục đó . Rất đơn giản, hãy xem bất kỳ mục nào chưa được cài đặt và đối với tất cả các ràng buộc của nó, chỉ cần đánh dấu chúng chưa được cài đặt. (Hoặc đơn giản, có lẽ chỉ cần tạm thời xóa hoàn toàn mục chưa cài đặt, để xem đó có phải là vấn đề không.)

28
Lời giải thích đó thật tuyệt vời. Cảm ơn bạn!
thomasmalt

7
Câu trả lời yêu thích của tôi trong tuần :) Và rất hữu ích. Cảm ơn!
5hrp

5
Tôi nghĩ rằng biểu tượng cảm xúc nên được yêu cầu trong câu trả lời từ bây giờ.
James Webster

3
Điều gì xảy ra nếu Reveal in Log bị mờ đi như trong trường hợp của tôi?
bakalolo

6
Nhấp chuột phải của tôi -> Reveal Log không làm gì cả nên tôi đã mở nhật ký bằng cách sử dụng này dưới dạng ref: stackoverflow.com/questions/19014359/ chủ
terrigenus

39

Thông báo này được kích hoạt khi bạn đã tắt chế độ xem trong bảng phân cảnh của mình, nhưng không hủy kích hoạt các ràng buộc dựa trên chế độ xem đó.

Ví dụ: bạn đã tắt một nút, nhưng bạn vẫn có một số ràng buộc được liên kết với nút đó. Nó có thể là một ràng buộc nội tại như chiều cao hoặc chiều rộng, hoặc một ràng buộc tương đối như khoảng cách từ một góc nhìn khác.

Bạn phải tắt từng ràng buộc tham chiếu chế độ xem và bạn phải thực hiện thủ công. Xcode đang được giám sát ở đây và sẽ không làm điều đó cho bạn.


4
Cảm ơn bạn đã trả lời của bạn! Bạn có thể làm cho nó cụ thể hơn "quan điểm deactive" là gì? Có phải là để xóa một khung nhìn (như một nút)? Nhưng vì tôi đã xóa nó, các ràng buộc cũng có thể bị xóa và không thể tìm thấy? Và làm thế nào để "tắt ràng buộc" chi tiết hơn, chỉ cần chọn và xóa nó? Cảm ơn rât nhiều!
Zhihao Yang

2
Nếu một khung nhìn không được đánh dấu là "Đã cài đặt" trong Trình tạo giao diện cho lớp kích thước hiện tại của nó, thì nó sẽ bị vô hiệu hóa.
DivideByZer0

Tôi có nhiều ViewControllers trong bảng phân cảnh của mình. ¿Làm thế nào để tôi biết cái nào có một subview không được cài đặt?
jobima

bạn có thể nhấp chuột phải vào cảnh báo và chọn tùy chọn "Mã nguồn". Ở đó bạn sẽ thấy rõ cấu trúc phân cấp của khung nhìn tương ứng trong bộ điều khiển khung nhìn được tôn trọng.
ZaEeM ZaFaR

15

Giải pháp này hiệu quả với tôi.

Vì tôi đã sao chép một số mục từ dự án tôi đã phát triển trong Xcode 5 sang Xcode 6 và bảng phân cảnh trong Xcode 6 hỗ trợ nhiều bố cục, cho mỗi ràng buộc, tôi cần cài đặt nó trong cấu hình hiện tại.

Ví dụ: tôi đang sử dụng "Chiều rộng nhỏ gọn | Chiều cao thông thường", cho các ràng buộc tôi cần đặt như bên dưới:

nhập mô tả hình ảnh ở đây

Sau khi tôi kiểm tra và thiết lập tất cả hàng trăm ràng buộc trong các dự án của mình, dọn dẹp và xây dựng, các cảnh báo cuối cùng cũng biến mất.


1
Lưu ý rằng cũng có những Installedhộp kiểm pesky trong thuộc tính đối tượng xem của bạn. Vì vậy, hãy chắc chắn rằng các đối tượng xem mà bạn nghĩ đang được hiển thị có hộp kiểm chính xác được chọn. Cảnh báo cho bạn biết rằng một số đối tượng không được hiển thị trong current configuration.
Matt

Cái này cũng có tác dụng với tôi. XCode cho biết tôi đã có 12 hoặc 13 cảnh báo, nhưng nhìn vào nhật ký cho một trong số chúng cho thấy có ít nhất 100. Vì vậy, tôi đã đi qua từng trong số chúng, thêm wChR cho mỗi ràng buộc và sau đó bỏ chọn 'Cài đặt' chung. Cảnh báo biến mất!
Andreas

Ồ, quên đề cập đến. Tôi nhận ra một nửa rằng bạn thực sự có thể thực hiện quy trình này cho một số ràng buộc cùng một lúc bằng cách chọn chúng cùng một lúc.
Andreas

8

Chỉ muốn thêm trường hợp của tôi như thế nào Lỗi này xảy ra với tôi: Trong trường hợp của tôi, tôi muốn xóa một Textfield với "Cmd + Backspace". Tôi đã làm điều này trực tiếp trong Chế độ xem cây xây dựng cảnh:

nhập mô tả hình ảnh ở đây

Bạn có thể thấy rằng Trường báo lại có màu xám.

Vì vậy, nó đã dễ dàng được phát hiện cho tôi. Bạn có thể thực sự xóa Trường bằng cách chọn:

Chỉnh sửa-Xóa khỏi Menu

Đáng ngạc nhiên - điều này thực sự xóa trường (bao gồm các ràng buộc). Có lẽ điều này giúp ai đó dễ dàng tìm ra nguyên nhân của Cảnh báo phiền phức này ...


Điều này không thực sự trả lời câu hỏi. Nếu bạn có một câu hỏi khác, bạn có thể hỏi nó bằng cách nhấp vào Đặt câu hỏi . Bạn cũng có thể thêm tiền thưởng để thu hút sự chú ý hơn cho câu hỏi này một khi bạn có đủ danh tiếng . - Từ đánh giá
Martin Evans

3
Đây là một cách khác mà câu hỏi được hỏi có thể được sửa chữa. Vì vậy, chỉ muốn thêm điều này để giúp đỡ người khác ...
Dirk

Cảm ơn, rất hữu ích
Ahmed Elashker

Điều này trả lời thu hẹp làm thế nào để tìm và khắc phục vấn đề. Nó làm việc cho tôi!
Lance Samaria

6

Giải thích mở rộng

Không có gì sai với các câu trả lời khác. Tôi chỉ muốn thu hút sự chú ý đến từ ngữ trong cảnh báo ban đầu và để xác định một vài trường hợp sử dụng trong đó điều này có thể hiển thị trong quy trình làm việc của một người.

cảnh báo hạn chế

Các mục tham chiếu ràng buộc đã tắt trong cấu hình hiện tại.

Có nghĩa là một số mục (thường là chế độ xem điều khiển hoặc tùy chỉnh thường thấy) được tham chiếu trong một hoặc nhiều ràng buộc bị tắt (bị vô hiệu hóa hoặc bỏ chọn hộp kiểm "đã cài đặt"). Ví dụ: nếu bạn quyết định rằng bạn muốn di chuyển điều khiển hoặc chế độ xem trong bảng phân cảnh của mình bên ngoài chế độ xem chính (hoặc đôi khi bạn có thể thấy điều gì đó thú vị trong các lớp kích thước) thì bạn có thể thấy cảnh báo này nếu điều khiển có ràng buộc với nó .

gỡ cài đặt điều khiển

Cùng với giải pháp được đề xuất:

Tắt ràng buộc này trong cấu hình hiện tại.

Hai cách tiếp cận để khắc phục

Đề cương tài liệu

Trực quan, bạn có thể mở Phác thảo tài liệu trong bảng phân cảnh của mình và tìm các ràng buộc màu xám tham chiếu đến điều khiển / chế độ xem bên ngoài chế độ xem chính (mở rộng phác thảo, nhấp vào ràng buộc và xem trình kiểm tra thuộc tính, di chuột xuống để xem nhanh) . Sau đó loại bỏ các ràng buộc từ bối cảnh này (lớp kích thước). Ví dụ, trong trường hợp của tôi, tôi chỉ giữ quyền kiểm soát cho đến khi tôi quyết định sau đó sẽ trình bày nó ở đâu, vì vậy tôi đã chọn xóa hoàn toàn các ràng buộc vi phạm cho đến sau này. Nhưng trong một lớp kích thước, tôi sẽ chỉ gỡ cài đặt ràng buộc từ ngữ cảnh hiện tại bằng cách sử dụng hộp kiểm được cài đặt trong trình kiểm tra thuộc tính.

Đăng nhập điều hướng / Tìm công cụ

Người ta cũng có thể tiếp tục sử dụng Trình điều hướng Đăng nhập để tìm kiểm soát sự cố thông qua mã định danh duy nhất được cung cấp cho từng đối tượng trên bảng phân cảnh. Trong nhật ký, nó sẽ ở ngay trước văn bản được tô sáng màu vàng và thường có dạng như trong ví dụ của tôi ở trên: jvj-mY-DHf

Sau đó, sử dụng mã định danh có thể sử dụng công cụ tìm kiếm trong Xcode để xác định vị trí và xóa (hoàn toàn) hoặc gỡ cài đặt (đối với bối cảnh hiện tại) các ràng buộc vi phạm.

log-hoa tiêu

Nếu bạn thích Xml và sự đơn giản của nó, bạn cũng có thể mở Storyboard dưới dạng Mã nguồn và tìm mã định danh duy nhất vi phạm và xóa khối xml thích hợp.


1

Một trong những lý do điều này có thể xảy ra là vì bạn đã chọn một lớp kích thước không tương thích với các ràng buộc của bạn ( wAny hAnylà trường hợp phổ biến). Trong trường hợp như vậy, chỉ cần chọn một lớp kích thước khác trong Trình tạo giao diện và bạn đã hoàn tất.


1

Đối với tôi, điều đó xảy ra nếu tôi đặt đối tượng một đối tượng mới đối với đối tượng (không phải chế độ xem) với tùy chọn "Ràng buộc với lề" không được đánh dấu. Vấn đề được giải quyết với đánh dấu tùy chọn (đó là mặc định).


1

Điều làm việc cho tôi (và tôi không biết tại sao) là tắt "Sử dụng biến thể Trait", sau đó thực hiện dọn dẹp, sau đó bật lại. Bản dựng tiếp theo không có cảnh báo.

Để tắt "Sử dụng biến thể đặc điểm", chỉ cần chọn bảng phân cảnh của bạn trong Trình điều hướng dự án và sau đó chọn Trình kiểm tra tệp.

nhập mô tả hình ảnh ở đây

Sau đó, chỉ cần bỏ chọn "Sử dụng biến thể đặc điểm", thực hiện sạch bằng cách nhấn Shift-CMD K và sau đó bật lại các biến thể tính trạng nếu bạn muốn sử dụng chúng.

nhập mô tả hình ảnh ở đây


Tôi không nghĩ rằng điều này là "đúng" mỗi lần (các ràng buộc biến mất), tuy nhiên câu trả lời này rất hữu ích cho tôi vì ngay khi tôi thay đổi công tắc này, và sau đó hoàn nguyên các thay đổi thành cam kết cuối cùng, Xcode sẽ cập nhật bất kỳ lỗi cũ / không chính xác nào / đã cố định cảnh báo của loại này. Có vẻ như Xcode sẽ hiển thị các cảnh báo cũ, đã được sửa rất nhiều lần - khởi động lại Xcode thông thường sẽ không giúp ích gì cho tôi. Lật công tắc đó + khôi phục lại lần xác nhận cuối cùng dường như hiển thị cảnh báo "thực" tiếp theo của loại này; nhấp vào nó sẽ tự động chọn ràng buộc có vấn đề trong IB.
Jonny

0

Tôi nghĩ rằng đó là một hạn chế dai dẳng do câu trả lời khác, tuy nhiên đó là do một 'cửa hàng' tôi vẫn có cho một mục tôi đã xóa trước đó. Việc cần làm là:

  1. Chọn ViewContoder của bạn
  2. Nhấp vào biểu tượng 'ổ cắm' ở trên cùng bên phải
  3. Xem qua các cửa hàng của bạn và cẩn thận xóa bất kỳ thứ gì bạn không cần

Trường hợp xấu nhất bạn xóa tất cả các cửa hàng của bạn và chỉ cần nối lại chúng. Vụ án được giải quyết!


0

Như đã đề cập và hướng dẫn tốt trong câu trả lời của @ BadCat , tôi đã làm theo các bước và chỉ một bước nữa tôi dám thực hiện!

Các bước thực hiện sau bước cuối cùng của BadCats trả lời:

Bước 1:

Tôi đã chọn các ràng buộc trong Trình tạo giao diện và sau đó ghi nhớ nó là gì và sau đó xóa nó.

Bước 2

Xây dựng Dự án XCode và nó sẽ cho bạn thấy số lượng Cảnh báo được tăng lên. Đó là bởi vì bạn đã xóa một ràng buộc mà nó cần phải biên dịch tốt. Vì vậy, đi đến Bước 3!

Bước 3

Thêm lại các ràng buộc mà bạn ghi nhớ (cái bạn đã xóa). Và sau đó xây dựng lại nó một lần nữa!

Đối với tôi, các cảnh báo đã biến mất chỉ bằng cách làm điều này! Tôi đoán điều này sẽ làm việc cho một số người!

Nguyên nhân:

Vì tôi có thể hiểu vấn đề gây ra cảnh báo này là, tôi đã có một Nhãn được kết nối với IBOutlet, nhưng tên của nó bắt đầu bằng chữ in hoa. Vì vậy, tôi đã đổi tên nó bằng một chữ cái đơn giản trong ViewContoder và đến để thay đổi nó trong IB. Tôi đã xóa IBOutlet trước đây và đi đến kết nối nó với tên thuộc tính mới được đổi tên và kết nối. Sau đó tôi nhận thấy có một cảnh báo mới xuất hiện.

Đầu tiên tôi đã thử câu trả lời sau trong chủ đề này, nhưng nó không có ích!

Chúc mừng!


0

Trường hợp của tôi là chọn nhãn, sau đó nhấp vào control + X, nó sẽ bị vô hiệu hóa, nhưng tôi không làm gì với nó. Khi tôi xây dựng, nó sẽ hiển thị cảnh báo. Giải pháp: xóa nhãn hoặc xóa điều khiển đã chọn + X cho nhãn.


0

Tôi xóa tất cả các thành phần UI bao gồm các ràng buộc của chúng và thêm lại tất cả chúng, những cảnh báo đó sẽ biến mất. Dù sao đây là một cách tồi tệ nhất nhưng hữu ích để giải quyết điều này.


0

Tôi đã có vấn đề trên một khung nhìn ngăn xếp. Xóa các ràng buộc và thêm lại chúng không giúp được gì. Làm sạch và xây dựng lại không giúp được gì.

Đối với tôi, giải pháp là tạo một đối tượng xem stack hoàn toàn mới.

Sau đó di chuyển tất cả các yếu tố từ chế độ xem ngăn xếp cũ sang chế độ xem ngăn xếp mới.

Xóa chế độ xem ngăn xếp cũ đã khắc phục sự cố.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.