2012-09-24 28 views
8

thể trùng lặp:
Can you reference Xib files from static libraries on the iPhone?tải một nib đó là bao gồm trong một khung

Tôi đã tạo ra một khuôn khổ iOS và nó bao gồm một cái nhìn xib. Khi tôi sửa lỗi chương trình, dòng mã này làm việc tốt:

MyViewController *controller = [[MyViewController alloc] initWithNibName:@"MyView" bundle:[NSBundle mainBundle]]; 

Tuy nhiên, khi tôi 'tham khảo' khuôn khổ từ một dự án khác - nib là không còn trong 'mainBundle'. Tôi nên làm gì với mã ở trên (đó là một phần của khung công tác) để nó tải từ khung công tác chứ không phải dự án ứng dụng tiêu thụ?

+0

Sorta liên quan [? Bạn có thể tham khảo file xib từ các thư viện tĩnh trên iPhone] (http://stackoverflow.com/questions/707429/can-you -reference-xib-files-from-static-libraries-on-the-iphone) – CodaFi

+0

@ConfusedNoob - đây có phải là một thư viện tĩnh hay một [khung công tác chung] (https://github.com/kstenerud/iOS-Universal-Framework)) cho iOS? – FluffulousChimp

+0

Đó là một khung phổ quát theo bài đăng này - http://spin.atomicobject.com/2011/12/13/building-a-universal-framework-for-ios/ nhưng nó bắt đầu cuộc sống như một thư viện tĩnh. – ConfusedNoob

Trả lời

15

Khuôn khổ được đề cập phải có định danh gói trong tệp Info.plist thường. Trong ứng dụng mà làm cho sử dụng các khung tùy chỉnh này, bạn sẽ có thể truy cập tài nguyên trong gói này bằng cách:

NSString *frameworkBundleID = @"com.yourCompany.YourFrameworkBundleID"; 
NSBundle *frameworkBundle = [NSBundle bundleWithIdentifier:frameworkBundleID]; 

Đây là NSBundle mà từ đó bạn có thể truy cập tài nguyên khuôn khổ.

EDIT:

Có dường như là một thay thế (có thể tốt hơn) phương tiện truy cập vào bó trong câu hỏi.

ví dụ:

NSBundle *bundle = [NSBundle bundleWithURL:[[NSBundle mainBundle] URLForResource:@"MyLibraryResources" withExtension:@"bundle"]]; 

Xem this excellent tutorial

+0

Tôi sẽ thử điều đó. Vì mã nằm bên trong khung công tác, có một cách 'introspective' hơn để làm điều này thay vì có tên được mã hóa trong khuôn khổ ... ví dụ: [NSBundle currentBundle]; // silly pseudocode – ConfusedNoob

+1

downvote - thực sự? OP đã tuyên bố "khung công tác iOS" mà người ta có thể giả định một cách hợp lý cái gì đó như [this] (https://github.com/kstenerud/iOS-Universal-Framework) trong đó tài nguyên ** có thể ** được đóng gói. – FluffulousChimp

+0

@ConfusedNoob không chắc chắn về nội dung bạn gợi ý. – FluffulousChimp

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