2012-09-25 12 views
13

Tôi mới sử dụng Xcode và đang gặp sự cố với lỗi IDE khi tôi sử dụng Trình tạo giao diện. Đây là Xcode 4.5.Trình tạo giao diện Xcode gặp sự cố khi tôi chỉnh sửa bảng phân cảnh

Nó hoạt động bình thường đủ lâu để tôi thêm một tá nút vào bảng phân cảnh - nhưng khi tôi cố gắng thay đổi kích thước bất kỳ biểu tượng nào, nó bị treo và thoát. Nếu tôi di chuyển một nút, nó sẽ bị treo. Nếu tôi thêm một đối tượng mới như một nhãn, nó đôi khi sự cố, nhưng không phải lúc nào cũng vậy.

Nếu tôi không cố gắng chỉnh sửa bảng phân cảnh, dự án sẽ xây dựng và chạy trên trình mô phỏng mà không có sự cố.

Tôi đã dán nội dung trông giống như phần có liên quan của báo cáo sự cố bên dưới. Để tiết kiệm dung lượng, tôi đã xóa mọi thứ từ phần 'phân cấp chế độ xem' xuống dưới, nhưng tôi có thể thêm nó nếu nó hữu ích. Tất cả các báo cáo sự cố đều đề cập đến cùng một lỗi.

Điều thú vị là khi tôi nhìn vào các bản ghi Console, có một báo cáo khác từ giao diện Builder trước mỗi một trong các tai nạn:

25/09/2012 10:46:35.661 Interface Builder Cocoa Touch Tool: CFPreferences: 
user home directory at file://localhost/Users/me/Library/Application Support/ 
iPhone Simulator/User/ is unavailable. User domains will be volatile. 

Đó là chính xác - thư mục đó không tồn tại. Tôi đã có iPhone Simulator/6.0, nhưng không có gì khác. Tôi đã đăng nhập với tư cách là người dùng trong đường dẫn đó.

Dựa trên các đề xuất khác về Stack Overflow và các nơi khác, tôi đã thử làm sạch bản dựng rồi xóa toàn bộ thư mục iPhone Simulator và cho phép trình mô phỏng tạo lại, nhưng điều đó không có sự khác biệt.

Là một thử nghiệm, tôi vừa tạo một Dự án mới và kéo một số nút và nhãn vào bảng phân cảnh. Điều đó có vẻ ổn. Không có sự cố.

Điều đó có gợi ý rằng có điều gì đó đã bị hỏng trong dự án khác của tôi không?

Mọi đề xuất sẽ rất được hoan nghênh. Đây không phải là một dự án quan trọng - tôi đang học theo cách của mình ở giai đoạn này - nhưng nếu có điều gì đó gây ra vấn đề thì tôi muốn sắp xếp nó trước khi tôi bắt đầu bất kỳ công việc nghiêm túc nào trong Xcode.

Xin cảm ơn trước.

James

Process:   Xcode [650] 
Path:   /Applications/Xcode.app/Contents/MacOS/Xcode 
Identifier:  com.apple.dt.Xcode 
Version:   4.5 (1839) 
Build Info:  IDEApplication-1839000000000000~3 
App Item ID:  497799835 
App External ID: 10747437 
Code Type:  X86-64 (Native) 
Parent Process: launchd [129] 

Date/Time:  2012-09-25 10:46:43.202 +0100 
OS Version:  Mac OS X 10.7.5 (11G56) 
Report Version: 9 

Crashed Thread: 0 Dispatch queue: com.apple.main-thread 

Exception Type: EXC_CRASH (SIGABRT) 
Exception Codes: 0x0000000000000000, 0x0000000000000000 

Application Specific Information: 
ProductBuildVersion: 4G182 
ASSERTION FAILURE in /SourceCache/IDEInterfaceBuilderCocoaTouch/IDEInterfaceBuilderCocoaTouch-1926/IBPlugin/Utilities/IBObjectMarshalling.m:651 
Details: Failed to arbitrate IBNSLayoutConstraint, IBUIButton, IBUILabel, IBUIView, and IBUIViewController. 

Interface Builder encountered an error communicating with the iOS Simulator. If you choose to file a crash report or radar for this issue, please check Console.app for crash reports for "Interface Builder Cocoa Touch Tool" and include their content in your crash report. 

Exception name: IBAssertionFailure 
Exception reason: ASSERTION FAILURE: 
Reason:  All views needing candidate constraints have already had constraints generated. This most likely indicates a bug involving layout of the following views: 
Layout engine frame ({{20, 60}, {282, 57}}) of <UILabel: 0xb36f590; frame = (20 60; 281 57); text = '0'; clipsToBounds = YES; opaque = NO; autoresize = TM+BM; userInteractionEnabled = NO; layer = <CALayer: 0xb36f620>> does not match canvas frame ({{20, 60}, {281, 57}}) 
Layout engine frame ({{236, 328}, {66, 43}}) of <UIRoundedRectButton: 0xb384590; frame = (236 328; 65 44); opaque = NO; autoresize = TM+BM; layer = <CALayer: 0xb384660>> does not match canvas frame ({{236, 328}, {65, 43}}) 
Layout engine frame ({{236, 124}, {66, 43}}) of <UIRoundedRectButton: 0xb38ea10; frame = (236 124; 65 44); opaque = NO; autoresize = TM+BM; layer = <CALayer: 0xb38eae0>> does not match canvas frame ({{236, 124}, {65, 43}}) 
Layout engine frame ({{236, 175}, {66, 43}}) of <UIRoundedRectButton: 0xb390a30; frame = (236 175; 65 44); opaque = NO; autoresize = TM+BM; layer = <CALayer: 0xb36e8e0>> does not match canvas frame ({{236, 175}, {65, 43}}) 
Layout engine frame ({{236, 226}, {66, 43}}) of <UIRoundedRectButton: 0xb392a90; frame = (236 226; 65 44); opaque = NO; autoresize = TM+BM; layer = <CALayer: 0xb392b60>> does not match canvas frame ({{236, 226}, {65, 43}}) 
Layout engine frame ({{236, 277}, {66, 43}}) of <UIRoundedRectButton: 0xb394b70; frame = (236 277; 65 44); opaque = NO; autoresize = TM+BM; layer = <CALayer: 0xb394c40>> does not match canvas frame ({{236, 277}, {65, 43}}) 

Trả lời

15

Cập nhật: Tiếp tục thử nghiệm cho thấy hộp kiểm 'Sử dụng Autolayout' cho kịch bản này. Tắt tính năng này sau đó lưu tệp dường như đã khắc phục sự cố. Tôi có thể chỉnh sửa theo ý muốn, không còn bị treo nữa.

+0

Tôi đang gặp sự cố tương tự này và có vẻ như sự cố giống hệt nhau, nhưng tôi không sử dụng bảng phân cảnh. Bạn đã kiểm tra "Sử dụng Autolayout" ở đâu trên bảng phân cảnh của mình? Hoặc, là hộp kiểm này ở một nơi khác? Cảm ơn –

+0

Khi nào sự cố xảy ra? Ứng dụng của bạn có bảng phân cảnh (trống) với một loại chế độ xem nào đó không? Hộp kiểm nằm trong khung kiểm tra bên phải của Trình tạo giao diện. Tắt ** off ** là điều đã khắc phục được sự cố của tôi. Hãy cho tôi biết nếu bạn không thể tìm thấy nó và tôi sẽ thêm một màn hình lấy. Chúc may mắn. – James

+1

Đã xảy ra lỗi khi chỉnh sửa .xib trong một ứng dụng chế độ xem đơn lẻ; Tôi chỉ cần bỏ chọn "Sử dụng Autolayout" cho xib như bạn đã đề xuất, cảm ơn –

1

Vấn đề này có thể có cái gì để làm với bây giờ hai khác nhau có kích thước iPhone Retina hiển thị (3,5" và 4") và cách tương tác với một cái nhìn Mode: Scale Để Điền và có lẽ AutoSize subviews, cũng - - cả hai đều được bật theo mặc định.

Ví dụ, trong trường hợp của tôi, tôi đã có một 4 "retina kích thước MainView với khung nhìn đóng gói chặt chẽ.Nhưng giả lập đã được thiết lập để hiển thị 3,5 võng mạc. Bởi vì các nút của tôi chỉ có kích thước 43x43px và khoảng cách ngay bên cạnh nhau , điều này sẽ khiến vị trí nút tự động giảm tỷ lệ theo cách chúng chồng lên nhau, khi vị trí của chúng được điều chỉnh cho màn hình 3,5 "(Quy mô Để điền một không gian nhỏ hơn) - vì chúng không thể thu nhỏ kích thước. Sự chồng chéo các khung nhìn này dường như có thể gây ra các vấn đề trong hệ thống bố trí tự động. Do đó vụ tai nạn, tôi nghĩ vậy.Điều này cũng sẽ không nghi ngờ gì là lý do tại sao có một số tham chiếu để giao tiếp với trình giả lập trong báo cáo sự cố, mặc dù chúng tôi chỉ làm việc trong Trình xây dựng giao diện, mà trước đây không có vẻ trực quan.

+0

Đồng ý. Điều đặc biệt, mặc dù, là trong khi việc bật Bố cục Tự động sẽ khắc phục sự cố, hãy bật lại sau ** không làm cho sự cố trở lại **. Odd. Bạn đã thử điều đó với bạn chưa? Tôi đã để nó bật lên mà không còn vấn đề gì nữa - điều đó khiến tôi nghĩ rằng có thứ gì đó bị hỏng. – James

2

Khi tệp xib ở các định dạng khác nhau, nhưng tất cả đều nằm trong cùng một dự án, điều này sẽ xảy ra. Trong trường hợp của tôi, một số file xib là tương thích với xcode5 dp, nhưng những người khác đã cho xcode 4.6

Đối tượng ở đây là để tìm kiếm sự khác biệt trong file xib

Hope this helps người trong tương lai!

+1

Cảm ơn, điều này dường như đã khắc phục được sự cố của tôi. –

1

Tôi nhận được lỗi này là tốt, đối với tôi vấn đề là một TableView đã có một số hạn chế còn lại. Sau khi xóa tất cả các ràng buộc, lỗi đã ngừng hiển thị.