2012-06-15 3 views
2

런타임에 이미지를 배경으로 설정하려고 했으므로 Interface Builder에서 으로 UIImageView 'backGroundImage'를 만들었습니다. 다음 코드 그러나 :UIImageView setImage가 IBOutlet에서 작동하지 않습니다.

UIImage *image = [UIImage imageNamed:imageName]; 
    NSLog(@"image=nil %d",(image ==nil)); 
    NSLog(imageName); 
    [self.backGroundImage setImage:image]; 
    NSLog(@"backgroundImage=nil %d",(self.backGroundImage.image ==nil)); 

이 나에게주는 그래서 기본적으로 내 이미지를로드 할 수 있습니다 NSLogs

2012-06-15 12:09:43.967 iElster[1960:207] image=nil 0 

2012-06-15 12:09:43.967 iElster[1960:207] bedroom-sketch-corel-eps-vector-art-1141.jpg 

2012-06-15 12:09:43.968 iElster[1960:207] backgroundImage=nil 1 

다음,하지만 난 UIImageView의 이미지로 설정할 수 없습니다. 나는 다음 줄 내 backGroundImage.image에 대해 더 이상 '무'를하지 않는

backGroundImage = [[UIImageView alloc]init]; 

을 포함하는 경우 - 그러나이 경우 나는 분명히 더 이상 출구에 의해 생성 된 UIImageView를 사용하지 마십시오. 위의 코드에서 문제가 보이지 않습니다. 비슷한 스택 오버플로 스레드의 제안 사항이 정확히 동일하기 때문에 "setImage 메서드 사용"; 어떤 아이디어가 문제 일 수 있습니까?

PS : - 다른 이미지 (.png와 .jpg)를 사용해 보았습니다. 내 ScrollView에 대한 하위 뷰로 설정하면되지만 위 코드에서 사용하려고하면 표시되지 않습니다. 따라서 이미지 파일에 문제가 없어야합니다.

+1

코드에서 IB의 UIImageView를 IBOutlet에 '연결'하는 것을 잊어 버린 것 같습니다. 그럴까요? –

+0

나는 제대로 @synthesized 가지고 있고 Ctrl 키를 + IB (내가 실제로 두 번 여러 가지 방법을 여기에 게시하기 전에 여러 번 확인했습니다)에 의해 IBOutlet UIImageView 연결할 않았다 –

+0

다음 줄을 넣으십시오 :'NSLog (@ self.backGroundImage는 nil입니다 : % @ ", self.backgroundImage? @"NO ": @"YES "); 그리고'backGroundImage = [[UIImageView alloc] init];을 버리십시오. 한 가지 더 : ** 어떤 메소드에서이 코드를 사용합니까 ** ** –

답변

5

이 코드를 전에 실행 한 다음보기가로드되고 콘센트가 연결되어있는 것 같습니다 (예 : init...). viewDidLoad에 넣어보세요. 보기가로드되기 전에 (즉, viewDidLoad에 액세스하기 전에) 뷰 아웃렛에 액세스 할 수 없습니다. 또한

이 행 :

[image release]; 

메모리 관리 오류 (overrelease)이다.

+0

고마워, 해결했습니다. 내가 실제로 "init"메소드에 넣었습니다. 왜냐하면 저는 "imageName"문자열을 인자로주고 있었기 때문에 클래스에 NSString 속성을 만들어서 그 정보를 저장하는 것을 게으른 것이 었습니다. –

관련 문제