문제

Xcode 프로젝트 (그룹이 아닌)에 디렉토리가있는 경우 기본 대상에 추가되어 컴파일하는 경우 NSViewController를 어떻게 지시합니까? initWithNibName:bundle: 해당 디렉토리 내부의 NIB 파일?

난 노력 했어 [viewController initWithNibName:@"FolderName/NibName" bundle:nil], 그러나 그것은 작동하지 않습니다. 폴더 이름이 없거나 번들 매개 변수를 설정하지 않습니다. [NSBundle mainBundle]. 나는 심지어 번들을 설정하려고 시도했습니다 [NSBundle bundleWithPath:pathToFolderName] 아무 소용이 없습니다.

도움이 되었습니까?

해결책

당신은 이와 같은 폴더를 사용하지 않는 것이 가장 좋습니다. [nsimage imageNamed :] 또는 View Controller init 메소드와 같은 많은 코코아 편의성은 번들의 리소스 폴더에서 파일을 찾을 것으로 기대합니다.

어쨌든 NIB 파일 폴더를 실제로 유지하려면 편의 방법을 사용할 수는 없습니다. view 컨트롤러의 [NSViewController LoadView] 메소드를 호출 할 수 있습니다 -[NSBUNDLE LOADNIBFILE : externalNametable : WithZone :]. NSNIBOWNER가있는 이름 테이블 인 NIB 파일로의 경로를 전달합니다. 또한 NIB 파일에서 최상위 객체를 출시해야합니다.

자원의 하위 디렉토리를 버리면 상황이 훨씬 매끄럽게됩니다.

다른 팁

또 다른 옵션은 비 그룹 디렉토리의 *.xib 파일을 기본 번들로 복사 할 수있는 '빌드 단계'의 끝에서 실행할 '실행 스크립트'를 작성하는 것입니다. XIB 파일을 복사해야 할뿐만 아니라 ibtool 명령. 아래는 내가 사용하는 내 스크립트의 예입니다.

# 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} "메인 번들"의 경로입니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top