2012-02-10 3 views
0

내 시스템 환경 설정 프로젝트에서 NSImages를 해결할 수없는 것 같습니까?시스템 환경 설정 NSImage가 해결되지 않습니다

이미지는 내 xcode 프로젝트의 내 기본 폴더에있는 user.png입니다.

편집 : Source Code에 대한 링크가 포함되어 있습니다. 희망을 갖고 누군가가 문제를 발견 할 수 있기를 바랍니다.

PersonController.m

- (id)tableView:(NSTableView *)tableView objectValueForTableColumn:(NSTableColumn *)tableColumn row:(NSInteger)row { 
    Person *person = [personsList objectAtIndex:row]; 

    if (tableColumn == listGender) { 
     if ([person.gender isEqualToString: @"m"]) { 
      /**************************** 
      * Method - 1: Doesn't work 
      ****************************/ 
      NSImage *image = [NSImage imageNamed:@"user.png"]; 
      NSLog(@"image is valid? %@", [image isValid] ? @"yes" : @"no"); 
      return image; 


//   return @"male"; 
     } 
     else { 
      /**************************** 
      * Method - 1: Doesn't work 
      ****************************/ 
      NSImage *image = [NSImage imageNamed:@"user_female.png"]; 
      NSLog(@"image is valid? %@", [image isValid] ? @"yes" : @"no"); 

      return image; 
//   return @"female"; 
     } 
    } 
    else if (tableColumn == listName) { 
     return [person valueForKey:@"name"]; 
    } 
    else { 
     return nil; 
    } 
} 

또한, 지정이 경로가 작동하지만, 내가 왜 전체 경로를 지정해야합니까?

NSImage *myImage = [[NSImage alloc] initByReferencingFile:@"/Users/coderama/sandbox/Persons/user.png"]; 
+0

다른 mac에서 작동하는 앱을 원한다면 아래의 대답 에서처럼 mainBundle을 사용하는 것이 좋습니다 –

+0

제안에 대해 모두 감사하지만 불행히도 그들 중 누구도 일하지 않았습니다. 소스 코드의 업데이트를 참조하십시오. 누군가가 문제를 발견 할 수 있기를 바랍니다. 또한 도움을 주신 모든 분들께 +1 – Coderama

답변

2

이 방법으로 프로젝트 폴더에 이미지 파일을 도달 할 수있다 :

NSString *imagePath = [[NSBundle mainBundle] pathForResource:@"smiley" ofType:@"png"]; 
NSImage *image = [[NSImage alloc] initWithContentsOfFile: imagePath]; 
NSImageCell *cell = [[NSImageCell alloc] init]; 
[cell setImage:image]; 
+0

나는 이것을 시도했지만 여전히 같은 결과를 얻었습니다. – Coderama

+0

'setObjectValue' 대신'setImage' 메소드를 사용하십시오. 대답을보세요, 내가 업데이트했습니다. –

2

이미지의 정확한 이름을 사용해야합니다. 이미지가 "Smiley.png"이면 "Smiley.png"를 사용하십시오. 또한 방법 imageNamed과 함께 확장을 사용해야합니다. 시도 :

NSImage *image = [NSImage imageNamed:@"smiley.png"]; 

파일이 실제로 모두 작은 문자 인 경우 두 번 선택하십시오.

1

smiley.png 파일이 Xcode 프로젝트 탐색기에 표시됩니까? 그렇지 않은 경우 빌드 된 응용 프로그램에 추가되지 않습니다. Finder에서 탐색기로 드래그하고 "대상을 대상으로 복사 ..."를 선택 해제하십시오. Drag

탐색기에있는 경우 대상 구성원을 확인하십시오. 탐색기에서 파일을 클릭하고 유틸리티 분할 창을여십시오. 첫 번째 탭에서 응용 프로그램의 확인란이 선택되어 있는지 확인하십시오. XIB 드래그에서 및 listGender 테이블 컬럼에 NSImageCell 드롭 :

1 단계 : 나는 당신의 코드를 확인하지 않았지만 Target Membership

0

나는 당신에게 다음 단계를 제안하고 싶습니다.

단계 2 :에

– tableView:willDisplayCell:forTableColumn:row:

설정할 이미지 :이 방법을 구현한다 : TableColumn의 == listGender

3 단계 복귀 닐

, - tableView:objectValueForTableColumn:row:에서 셀, when tableColumn == listGender

호프가 도움이 되길 바랍니다.

+0

방금 ​​시도했지만 작동하지 않습니다.내 원래 게시물에 첨부 된 zip 파일로 이동하십시오 ... – Coderama

관련 문제