2010-06-16 10 views
1

그냥 코코아를 탐험하기 시작 했으니까요.코코아 버튼에 이미지가 표시되지 않습니다.

아주 간단한 게임을 작성했습니다. 인터페이스 빌더에서 설정하고 잘 작동 해.

많은 버튼이 포함되어 있으며 버튼을 이미지로 표시하려고합니다.

시작하려면 타일 0이라는 버튼 중 하나에 이미지를 표시하려고합니다.

이미지 파일 (지금은 녹색 사각형에 불과하지만 좀 더 이국적인 것을 시도하기 전에 이미지를 가져 오려고합니다)이 게임을 제어하는 ​​클래스 파일과 같은 디렉토리에 있습니다.

나는 다음과 같은 코드 내 wakeFromNib 방법에 앉아 있습니다

NSString *myImageFileName = [[NSString alloc] init]; 
myImageFileName = @"greenImage.jpg"; 
NSImage *myImage = [[NSImage alloc] initByReferencingFile:myImageFileName]; 
[tile0 setImage: myImage]; 

문제는, 게임이 잘 실행되지만 이미지가 내 버튼에 표시되지 않습니다.

내가 분명히 잘못하고 있다고 말할 수있는 사람이 있습니까?

많은 감사.

답변

1

첫 번째 문제는 문자열을 할당 한 다음 문자열 상수로 바꾸는 것입니다. 그게 당신의 이미지 문제를 일으키지는 않지만 메모리 누수입니다.

나는 initByReferencingFile을 사용한 적이 없으며, 보통은 imageNamed:을 사용합니다. imageNamed here을 사용하는 예가 있습니다.

+0

그리고 imageNamed :를 사용하는 경우 이미지를 앱의 Resources 디렉토리에 넣어야합니다. 원본 옆에 이미지를 놓고 이진 파일을 찾을 수는 없습니다. – JWWalker

+1

우수. imageNamed는 정상적으로 작동했습니다. 많은 도움에 감사드립니다. 매우 감사. 나는 책을 가지고 있으며 가능한 한 많이 문서를 사용하지만 때로는 다른 사람들에게 묻는 것이 유일한 것이다 :-) –

+1

'initByReferencingFile :'이 작동하지 않는 이유는'initByReferencingFile :'이 사촌과 같이 'initWithContentsOfFile :'는 경로명을 취한다. 상대 경로로 작동하는 파일 이름을 전달했으나 현재 작업 디렉토리 (파일 시스템의 루트가 기본값 임)에 이러한 파일이 없기 때문에 작동하지 않습니다. 즉,/greenImage.jpg가 없습니다.). 'imageNamed :'는 (a) 특별히 파일 이름 (확장자의 유무에 관계없이)을 원하고 (b)로드 된 번들의 'Resources'디렉토리에있는 이름을 가진 파일을 찾는다. –

관련 문제