如果我的Xcode項目中有一個目錄(不是Group),它被添加到主目標並編譯它,如何指示一個NSViewController到initWithNibName:bundle:
該目錄內的一個nib文件?我試過[viewController initWithNibName:@"FolderName/NibName" bundle:nil]
,但那不起作用。沒有文件夾名稱,也沒有將捆綁參數設置爲[NSBundle mainBundle]
。我甚至嘗試將這個包設置爲[NSBundle bundleWithPath:pathToFolderName]
無濟於事。在Xcode的子文件夾中引用一個nib文件編譯Cocoa應用程序包
2
A
回答
3
你最好不要使用這樣的文件夾。許多可可便利,如 - [NSImage imageNamed:]或視圖控制器init方法希望在該資源包的Resources文件夾中找到一個文件。
如果你確實想保留一個NIB文件的文件夾,你可以,但是你將無法使用便利的方法。你可以重寫你的視圖控制器的[NSViewController loadView]方法來調用 - [NSBundle loadNibFile:externalNameTable:withZone:]。您可以將路徑傳遞給NIB文件,將NSNibOwner設置爲視圖控制器的名稱表以及NULL區域。您還需要注意從NIB文件釋放頂級對象。
如果您放棄參考資源中的子目錄,事情會變得更加順暢。
1
另一種選擇是創建一個'運行腳本'在'Build Phases'結束時執行,它可以將* .xib文件從非組目錄複製到主包中。您不僅需要複製xib文件,而且需要使用ibtool
命令將它們編譯爲* .nib文件。下面是我用我的腳本的例子:
# For some reason the tilde is causing problems with find
# so I am replacing the tilde with /Users/whoami
user=`whoami`
# We will find all non-nib files in this directory and copy them into the main bundle
find -L ${LW_ISHARE_PLATFORM_SRC/\~/\/Users\/$user}/lw-ishare-platform-nibs -type f -not -name ".*" -not -name "*.xib" | xargs -t -I {} cp {} ${CONFIGURATION_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/
export IBC_MINIMUM_COMPATIBILITY_VERSION=${IPHONEOS_DEPLOYMENT_TARGET}
#setenv PATH "/Developer/Platforms/iPhoneSimulator.platform/Developer/usr/bin:/Developer/usr/bin:/usr/bin:/bin:/usr/sbin:/sbin"
export XCODE_DEVELOPER_USR_PATH="/Developer/usr/bin/"
# Now compile all xib files into nib files
for each in `find -L ${LW_ISHARE_PLATFORM_SRC/\~/\/Users\/$user}/lw-ishare-platform-nibs -type f -name "*.xib"`
do
prefix=`basename "${each}" .xib`
${XCODE_DEVELOPER_USR_PATH}/ibtool --errors --warnings --notices --output-format human-readable-text --compile ${CONFIGURATION_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/${prefix}.nib ${each} --sdk ${SDKROOT}
done
exit 0
$LW_ISHARE_PLATFORM_SRC
對我來說是一個全球性的XCode變量,我把我所有的*的.xib和相關資源的$LW_ISHARE_PLATFORM_SRC/lw-ishare-platform-nibs
目錄。
${CONFIGURATION_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}
是您的「主包」的路徑。
相關問題
- 1. 創建一個沒有NIB文件的Cocoa應用程序
- 2. xcode更新現有文件夾中的應用程序文件
- 3. 在Cocoa應用程序中獲取文件夾的路徑
- 4. 如何用Xcode中的多個文件編譯C程序
- 5. VB6應用程序編譯的文件
- 6. xcode - 將一個文件夾結構複製到我的應用程序包
- 7. 使用.Net應用程序打包一個文件夾
- 8. 安裝在一個(子)PHP應用程序文件夾
- 9. Xcode,更改應用程序子文件夾?
- 10. 查看.m文件中的一個文件夾(包括子文件夾)在MATLAB
- 11. Xcode中如何檢索文檔文件夾中的文件,並在另一個應用程序
- 12. 如何在命令行編譯的Swift應用程序中使用文件夾?
- 13. 使用另一個nib文件的nib文件加載視圖
- 14. 試圖從另一個子文件夾引用1個子文件夾
- 15. 檢查,如果一個文件中的應用程序文件夾中存在
- 16. Xcode不在應用程序文件夾中
- 17. Xcode iOS 11顯示應用程序中的文件夾應用程序File Apple
- 18. openWithDefaultApplication在應用程序文件夾中的文件中失敗
- 19. 在Windows應用程序中包含一個.bat文件或一個.exe文件
- 20. 用Cocoa上傳文件夾
- 21. Eclipse編譯在包文件夾中放了很多.class文件
- 22. 在Cocoa中創建一個文件夾(包)
- 23. 谷歌應用程序引擎下載一個包含文件的文件
- 24. 編譯一個包含多個文件的程序
- 25. Rails應用程序在Rails應用程序的子文件夾中
- 26. 應用程序角度在子文件夾中不起作用
- 27. 將文件部署到iPad應用程序從Xcode的文檔文件夾
- 28. 使用javac在一個包中編譯四個java文件
- 29. 在子文件夾中的主機MVC 2應用程序
- 30. 如何寫入文本我的應用程序在xcode中的文件夾