2013-02-27 2 views
1

나중에 파일 이름이 들어있는 .csv (쉼표로 구분 된 파일)에서 읽은 개체가 있습니다. 그게 내가 왜 이렇게하려고하는지.NSObject에 이미지 추가 - 가능합니까?

내가 달성하고 싶은 것은 단추가 CSV 파일 이름에서 이미지를 가져 오는 것입니다. 내가 지금까지 시도했습니다 무엇

: 오브젝트 :

@interface question : NSObject 
{ 
@private 
UIImage *imageName; 
} 
@property (nonatomic, retain)UIImage *imageName; 

(나는있는 NSString과 시도가있는 UIImage로 aswell 아니하며 내가 그들을 원하는처럼 작동)

의 ViewController를 :

- (void)viewDidLoad 
{ 
[super viewDidLoad]; 
question *question1 = [[question alloc]init]; 
[question1.imageName initWithContentsOfFile:@"Default.png"];//Will be read from a csv later on, just typing it in manually for a test 
testImage = question1.imageName; 

} 


-(void)imageshow 
{ 
//(UIImage *)testImage;(NSString *)imageNameString; Didnt work 
//[self.testImage initWithContentsOfFile:@"%@",questiont.imageName]; - Doesnt work either 

[testButton setImage:testImage forState:UIControlStateNormal]; 


} 
-(IBAction)test:(id)sender 
{ 
[self imageshow]; 
} 

이 코드가 실패하면 테스트 버튼을 누르면 아무런 반응이 없습니다 (크래시 아님)

어떻게해야 제대로 할 수 있습니까? (A NSObject의에 텍스트 파일 이름으로 이미지를 추가하고 버튼/이미지보기에서 표시)

+0

@ "Default.png"상점은 어디에 있습니까? –

+0

@GuoLuchuan 지원 파일 폴더에서 기본 검은 색 배경 이미지입니다. –

+0

이것을 시도하십시오 : question1.img = [UIImage imageNamed : @ "Default.png"]; [testButton setImage : question1.img forState : UIControlStateNormal]; – yunas

답변

1
question1.img = [UIImage imageNamed:@"Default.png"]; 
    [testButton setImage:question1.img forState:UIControlStateNormal]; 

을 그래 당신은 동적 이미지에 대해 다음을 시도 할 수 있습니다

question1.img = [UIImage imageNamed:[NSString stringWithFormat:"%@",imgName]]; 

imgName => "abc.png"또는 "123.png"등 재산이 imageName 이름을 지정하면

+0

정확히 내가 원했던 것. 고마워. –

1

이 접근 변수를 automaticly _imageName 이름 : 이미지가 아닌 이미지 예의 이름입니다.

코드에서 두 개의 다른 변수를 사용하고 있습니다.

@interface question : NSObject 
{ 
    @private 
    UIImage *_imageName; 
} 
@property (nonatomic, retain)UIImage *imageName; 

imageName은 이미지가 포함 된 속성에 큰 이름이 아닙니다. 문자열에 더 잘 어울립니다.

+0

그래, 그것은 원래 문자열을위한 것이었지만, 나는 놀고 있었고 모든 것을위한 모든 멋진 이름을 만드는 것을 괴롭히지 않았습니다. –

1

변경할 내용이 있습니다.

단순한 종래의 이유로 모든 클래스 이름은 처음에 대문자로 작성하십시오. 그것은 읽기 쉽고 포럼에서 교환을 쉽게하고 실수를 피합니다. 두 번째 이름 변수는 말하기 또는 초록이며, 선호 말하기. 그러나 오해의 소지가있는 이름 인 imageName을 선택하지 마십시오. 해당 변수에는 이미지가 아닌 이름이 있어야하며 이름이 표시된 그래픽이 있어야합니다. :)

imageWithContentsOfFile에는 정규화 된 파일 이름이 필요합니다. 나는 그것의 이름으로 추측으로 "Default.png 경우 ", 당신의 boundle의 일부, 다음 imageNamed:@"Default.png"는 할 것입니다.

setImage 거의 좋아 보인다 귀하의. 이미지가 (null) 동안 그것은 물론 작동하지 않을 수 있습니다. 그러나, 좋은 사업 practis 아니다 IVAR을 액세스하는이 시점에서 직접 당신은 세터/게터를 사용 shoudl 대신 사용합니다..

[self.testButton setImage:self.testImage forState:UIControlStateNormal]; 

를 귀하의 경우는 다른 규칙을 큰 차이하지만 비슷한을하지 않습니다이 피하는 오류 때 이제까지 도움이됩니다. 웹에서 찾은 코드 또는 팀에서 일할 때 코드를 혼합하십시오.