Tôi mất nửa ngày để tìm ra điều này và tôi không thể nhìn thấy một giải pháp thẳng về phía trước.Nơi đặt tệp .xib bên trong dự án khung công tác?
Tôi đã tạo Khung hình CocoaTouch cho iOS. Tôi có một số lớp học riêng và công cộng trong đó và tất cả đều hoạt động tốt. Các vấn đề là khi tôi thêm tập tin .xib bên trong khuôn khổ.
Bên trong khuôn khổ của tôi, tôi muốn nhanh chóng tập tin .xib và lỗi Tôi nhận được là:
*** Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: 'Could not load NIB in bundle: 'NSBundle </Users/dino/Library/Developer/CoreSimulator/Devices/FEDECDC2-D4EA-441E-B53B-329A5B3DFB7A/data/Containers/Bundle/Application/78CEC01F-4C36-4143-A7D6-DDE6CCAC801B/MyApp.app> (loaded)' with name 'NUInAppMessageView''
Tôi đã nghe nói rằng file .xib không thể được chứa bên trong thư viện tĩnh nhưng tôi nghĩ rằng họ nên được có thể được sử dụng bên trong khung công tác.
Mục tiêu khung của tôi chứa "Sao chép tài nguyên gói" từ trước và tệp .xib này được thêm tự động khi tôi tạo nó trong dự án khung.
Tôi đã đọc trên một vài nơi mà nguồn lực nên được bổ sung trong một riêng biệt. bó mục tiêu nhưng không có tùy chọn "nhóm" khi tạo mục tiêu mới và tôi tin rằng đây là mẫu cũ-thư viện-ngày cũ.
Đây là mã tôi đang sử dụng để khởi tạo quan điểm của tôi (bên trong khuôn khổ):
NSBundle * frameworkBundle = [NSBundle bundleForClass:[self class]]; // fine (not nil)
NUInAppMessageView *view = [[frameworkBundle loadNibNamed:@"NUInAppMessageView" owner:self options:nil] firstObject]; // <-- CRASH
tôi đã cố gắng để phá vỡ này thành một nhiều cuộc gọi phương pháp và hình dung rằng Nib chính nó là nhận được tạo ra:
UINib *nib = [UINib nibWithNibName:@"NUInAppMessageView"
bundle:frameworkBundle]; // fine (not nil)
NSArray *objects = [nib instantiateWithOwner:self options:nil]; // <-- CRASH
Tôi không còn ý tưởng nữa. Tôi đã thử với dự án sạch, xóa dữ liệu có nguồn gốc nhưng họ dường như không làm công việc.
Tôi có thiếu gì đó ở đây không?
Tôi không biết bạn đang làm gì sai nên tôi đã tạo một dự án mẫu mà bạn có thể tải xuống và kiểm tra. Nó được viết bằng Swift nhưng điều đó không tạo ra nhiều khác biệt, đặc biệt. vì có rất ít mã. :) https://github.com/mattneub/FrameworkWithNib – matt
Sự khác biệt rõ ràng duy nhất giữa mã của bạn và của tôi là tôi đã tải nib đó từ bên trong mã chính, chứ không phải từ bên trong mã khung, nhưng đó chỉ là một tai nạn; Nó không có Gì Thay đổi. Tôi chỉ viết lại nó để tôi tải nib từ bên trong mã khuôn khổ và nó hoạt động tốt quá. – matt
@matt Tôi sẽ xóa mọi thứ và tạo .xib mới. Nó có thể là Xcode sai ở đâu đó với các thiết lập được lưu trữ. Cảm ơn bạn. – vale4674