2012-06-21 28 views
45

tôi đang sử dụng các xcode mới 4.5, tôi có dòng mã này trên một số bộ điều khiển xem:Xcode 4.5 hỏng XIB?

DiscoverCell* cell=[table dequeueReusableCellWithIdentifier:@"DiscoverCell"]; 
if(cell==nil){ 
    NSArray *nib = [[NSBundle mainBundle] loadNibNamed:@"DiscoverCell" 
               owner:self 
               options:nil]; 
    cell = [nib objectAtIndex:0]; 
} 

khi tôi chạy ứng dụng ném nó: Chấm dứt ứng dụng do ngoại lệ còn tự do 'NSInternalInconsistencyException', lý do: ' Dữ liệu NIB không hợp lệ. ' trên dòng LoadNib, là gì? Xcode này có phải là một ít rác táo không?

+0

Tôi gặp vấn đề tương tự khi cố gắng khởi động Ứng dụng, với NIB bên trong, trên thiết bị iOS 5.1 ... (Khi tôi khởi động ứng dụng trong Trình mô phỏng mọi thứ hoạt động.) Giải pháp của tôi đang sử dụng Xcode 4.4 ... – Lindemann

+10

Sử dụng bảng tiện ích tập tin ở bên phải, đảm bảo mục tiêu dự án của NIB được đặt thành iOS 5 nếu đó là mục tiêu triển khai của bạn. Theo mặc định, điều này được thiết lập tại dự án là iOS 6 trong Xcode 4.5 và nó sẽ thay đổi và lưu nib theo cách không tương thích ngược. Thay đổi tất cả các ngòi ngách của bạn thành phiên bản iOS thực tế để triển khai và lưu. –

+0

nếu bạn đang sử dụng iOS6, hãy đảm bảo xem bài đăng này http://stackoverflow.com/questions/12411980/enabling-auto-layout-in-ios-6-while-remaining-backwards-compatible-with- ios-5 – Kassem

Trả lời

59

Bỏ chọn "sử dụng Autolayout" được tô sáng trong hình dưới đây. Xcode 4.5 cho phép thuộc tính này theo mặc định cho các tệp nib mới mà bạn thêm vào dự án của mình. Bỏ chọn hộp kiểm autolayout giải quyết vấn đề

+1

bạn tiết kiệm cuộc sống của tôi! – Andres

+0

@Andres bạn được chào đón – aToz

8

Tôi vừa gặp sự cố này và theo dõi nó xuống UIButton có trường Tiêu đề được đặt thành Thuộc tính trong Thanh tra thuộc tính. Thay đổi điều này thành Plain đã khắc phục được sự cố. Nếu tôi nhớ chính xác tôi đã thêm nút này trong phiên bản Xcode mới nhất và cũng gặp sự cố với nó.

+0

Bạn chỉ cần viết lại tiêu đề bởi vì khi thay đổi thành đồng bằng, nó sẽ bị xóa, nhưng tất cả các cài đặt phông chữ và màu sắc đều được giữ nguyên. –

+0

Sau đó, nếu tôi cần nó được phân bổ thì sao? – Antzi

71

Tôi đã gặp sự cố tương tự này và khắc phục sự cố này bằng cách bỏ chọn hộp kiểm 'Sử dụng Autolayout' trên ngăn Thanh tra Tài liệu trong Tiện ích.

+0

tuyệt vời! điều này đã giúp tôi quá! – Stas

+0

đã chết - ai cũng có báo cáo lỗi chưa? –

+0

Cảm ơn bạn rất nhiều :) –

6

Đối với tôi đó là sự kết hợp giữa nhận xét của Jason Coco và câu trả lời của tomgerhardt: Ứng dụng của tôi nhắm mục tiêu iOS5, tôi đã nâng cấp lên Xcode 4.5 và tạo một NIB mới. Theo mặc định, iOS6 được nhắm mục tiêu này gây ra sự cố. Tôi đặt nó vào iOS5 trong cửa sổ thanh tra tập tin của NIB.

Sau đó, tôi nhận được lỗi trình biên dịch cho tôi biết Sử dụng Autolayout không được hỗ trợ cho iOS5, đã bật tính năng kiểm tra tài liệu và sự cố của tôi đã được khắc phục.

4

Tôi đang sử dụng Xcode 4.5 và iPhone mô phỏng 5.0 và cùng một lỗi này khi Bảng đầu tiên được hiển thị. Theo lời khuyên 'bỏ chọn autolayout', tôi đã làm nó bằng cách chuyển đổi phiên bản tài liệu thành iOS 5.0. (Bảng phân cảnh đã chọn -> Tab Xác định tệp -> Tài liệu Trình xây dựng giao diện -> Phiên bản tài liệu.) AutoLayout đã được bỏ chọn.

2

Vì vậy, sau khoảng một giờ cố gắng tìm hiểu điều này, tôi đã tìm ra vấn đề. Nó thực sự được mô tả ở trên: đảm bảo rằng .xib của bạn được đặt thành cùng một phiên bản đích (trong trường hợp này, rất có thể là < 6.0) như ứng dụng chính của bạn được viết cho, và bỏ chọn "Use Autolayout" trong các tùy chọn cho điều này cụ thể .xib.

Lý do nó sẽ hoạt động trong trình mô phỏng, là do trình mô phỏng của bạn thực sự đang chạy iOS6. Khi cố gắng sử dụng thiết bị có iOS cũ hơn, sẽ dẫn đến lỗi này. Vấn đề của tôi là, tôi đã tạo một TableViewCell tùy chỉnh theo mặc định được nhắm mục tiêu cho iOS 6 và đã chọn "Use Autolayout". Đây là thủ phạm đối với tôi.

Hy vọng rằng tôi có thể cứu một người nào đó ở đó nỗi đau mà tôi đã gặp phải với lỗi này!

2

Sau khi tắt Auto-Layout cho tất cả các file .xib của tôi, tôi vẫn còn có lỗi. Điều này là do thực tế tôi đã sử dụng Văn bản -> Được gán cho một UILabel trong tệp .xib.

Sau khi đặt thành Đồng bằng, lỗi đã biến mất.

0

Tên sau "loadNibNamed:" phải là tên của tệp nib (trong trình điều hướng dự án ở bên trái màn hình), đôi khi mọi người viết có 'số nhận dạng ô' viết từ đầu trong CellForRowAtIndexPath (static NSString ...).

Có thể là sự cố của bạn trong lỗi nhỏ này?

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