2012-07-06 1 views
2

J'ai débutant de l'iPhone. J'ai des images dans un tableau, mais il retourne la valeur NULLcomment afficher une à une images lorsque vous cliquez sur le bouton suivant?

J'ai utiliser ce code

- (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); 

} 

première fois affichage d'images de bouton de clic, mais la deuxième fois ne pas afficher l'image et que la valeur NULL de retour .. donner toute suggestion et code source qui s'applique dans notre code.

Répondre

0

Ajouter le code de validation dans votre méthode viewDidLoad pour vérifier que les images sont correctement chargés: Méthode

- (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"); 
} 

Votre IBAction devrait avoir un paramètre sender devrait cependant pas?

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

Votre code me semble OK (mais je suis développeur Mac) donc je pense que c'est un problème d'emballage.

0

Utilisez cette méthode et currentImage = 0:

-(IBAction)Next 
{ 

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

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

} 
+0

Cela provoquera une exception; le test devrait être: 'if (currentImage> = [nombre d'images])'. – trojanfoe

+0

trojanfoe tu as raison –

0

Votre code est tout à fait exact ce que vous avez écrit, sauf que vous imprimez le currentImage parce currentImage est de type entier, mais vous avez mentionné « %@ » type de chaîne dans NSLog. C'est pourquoi il montre une erreur. Vous venez de changer celui-ci comme suit

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

Je pense que cela vous sera utile.

Questions connexes