2012-07-06 5 views
2

저는 초보자입니다. I는 배열 이미지가 있지만, 어느 제안을 제공 ..다음 버튼을 클릭 할 때 하나씩 이미지를 표시하는 방법은 무엇입니까?

이 I 화상과 그 리턴 NULL 값을 표시하지 코드를

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 
images= [[NSArray arrayWithObjects: 
         [UIImage imageNamed:@"1.png"], 
         [UIImage imageNamed:@"2.png"], 
         [UIImage imageNamed:@"3.png"], 
         [UIImage imageNamed:@"4.png"], 
         nil] retain]; 
} 
-(IBAction)Next 
{ 


    currentImage++; 
    if(currentImage>=[images count]) 
    { 
     currentImage=0; 


    } 

    UIImage *img=[images objectAtIndex:currentImage]; 
    [animalphoto setImage:img]; 
    NSLog(@"print:%@",currentImage); 

} 

처음 클릭 버튼 화상 표시하지만 두 번 사용 갖는 NULL을 돌아가서 우리 코드에 적용되는 소스 코드.

답변

0

는 이미지가 제대로로드되고 있는지 확인하기 위해 viewDidLoad 방법에 유효성 검사 코드 추가 :

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 
    images= [[NSArray arrayWithObjects: 
         [UIImage imageNamed:@"1.png"], 
         [UIImage imageNamed:@"2.png"], 
         [UIImage imageNamed:@"3.png"], 
         [UIImage imageNamed:@"4.png"], 
         nil] retain]; 
    NSAssert([images count] == 4, @"Failed to load one or more images"); 
} 

귀하의 IBAction 방법은 비록 sender 매개 변수를해야한다, 그것은해야하지?

-(IBAction)Next:(id)sender 
{ 
    currentImage = (currentImage + 1) % [images count]; 
    NSLog(@"currentImage=%d",currentImage); 
    UIImage *img=[images objectAtIndex:currentImage]; 
    [animalphoto setImage:img]; 
} 

귀하의 코드는 나에게 잘 보이지만 (맥 개발자) 나는 포장 문제로 의심됩니다.

0

이 방법을 사용하고 currentImage = 0 :

-(IBAction)Next 
{ 

    if(currentImage>=[images count]) 
    { 
    currentImage=0; 
    } 

UIImage *img=[images objectAtIndex:currentImage]; 
[animalphoto setImage:img]; 
NSLog(@"print:%@",currentImage); 
currentImage++; 

} 
+0

예외가 발생합니다. 테스트는 : if (currentImage> = [images count])'이어야합니다. – trojanfoe

+0

trojanfoe u r right –

0

에 코드를 정확하게 바로 당신이 currentImage 정수 유형이 있지만 NSLog에서 "%@"문자열 유형을 언급하기 때문에 당신이 currentImage 인쇄를 제외하고 쓴 것. 그것이 오류를 나타내는 이유입니다. 방금 다음과 같이 변경하십시오.

NSLog(@"print:%d",currentImage); 

나는 그것이 당신에게 도움이 될 것이라고 생각합니다.

관련 문제