Trước hết, vì câu hỏi của bạn được gắn thẻ iPhone, bạn chỉ có thể bao gồm mã trong các gói của mình trên iPhone. Vì vậy, về cơ bản bạn chỉ có thể sử dụng các gói để đóng gói hình ảnh và tệp âm thanh và các dữ liệu tĩnh khác.
Khi bạn tạo dự án mới trong XCode, có một tùy chọn để thực hiện nhắm mục tiêu một gói (trong Thư viện &), nhưng gói nội dung chỉ là một thư mục có hậu tố .bundle. Tôi tạo ra mỏ với kịch bản này chút:
#!/bin/bash
echo "Building assets bundle."
if [ -d ./MyAssets.bundle ]; then
rm ./MyAssets.bundle/*
else
mkdir ./MyAssets.bundle
fi
find ./assets -type f -print0 | xargs -0 -J% cp % ./MyAssets.bundle
(Tôi không có bash của hacker, vì vậy đây có lẽ có thể được cải thiện trong vô số cách Gợi ý hoan nghênh.!)
này có một hệ thống phân cấp thư mục và flattens nó (Tôi hủy phân cấp) thành một thư mục có tên MyAssets.bundle. Tôi kích hoạt tập lệnh này từ một giai đoạn xây dựng riêng biệt khi trong các dự án nhập gói, để các thay đổi được tự động theo dõi.
Nếu bạn muốn tìm hiểu cách tạo gói khung, điều này phức tạp hơn một chút (bạn phải tuân thủ một số quy ước nhất định và bao gồm thông tin theo yêu cầu), nhưng đối với gói iPhone, đây là tất cả những gì bạn cần biết và làm.
Có thể tải file xib từ gói này, bởi vì tôi đã không tìm thấy một cách để làm điều đó ? – vakio
Bạn có thể sử dụng gói thích hợp trong cả hai [[NSBundle mainBundle] loadNibNamed: @ "MyViewController" chủ sở hữu: tự tùy chọn: nil] và [aViewController initWithNibName: @ "MyViewController" bó: nil] (nil chỉ có nghĩa là gói chính) – Felixyz
Nhưng bạn không thể có một gói bên ngoài, phải không? Giống như NSBundle * bundle = someFunctionToLoadExternalBundle(); [bundle loadNibNamed: @ "name" owner: self options: nil]; Tôi đã googled và chỉ thấy rằng nó không thể được thực hiện. Chỉ cần kiểm tra nếu bạn phát hiện ra một cách kỳ diệu để làm điều đó hoặc một cái gì đó, nhưng tôi biết nó có lẽ sẽ không bao giờ xảy ra. – vakio