Question

Je suis désolé si cela a déjà été demandé, mais voici le problème :

Je reçois ce message lorsque je fais défiler rapidement tableView :

Arrêt de l'application en raison d'une exception non interceptée 'NSInvalidArgumentException', raison :'-[UIImageView setText:] :sélecteur non reconnu envoyé à l'instance 0x8a8f8d0'

Voici mon code :

   NewsVideoCell *cell = [tableView dequeueReusableCellWithIdentifier:AudioCellIdentifier];

   if (cell == nil) {
       cell = [[NewsVideoCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:AudioCellIdentifier];
   }


   cell.backgroundView = [ [UIImageView alloc] initWithImage:[ [UIImage imageNamed:@"news_bg"] resizableImageWithCapInsets:UIEdgeInsetsMake(10, 0, 10, 0)] ];  
   cell.selectedBackgroundView = [ [UIImageView alloc] initWithImage:[ [UIImage imageNamed:@"news_bg"] resizableImageWithCapInsets:UIEdgeInsetsMake(10, 0, 10, 0)] ];



   UILabel *cellLabel = (UILabel *)[cell viewWithTag:1];
   [cellLabel setText:[masjid objectForKey:@"name"]];

   UILabel *cellDate = (UILabel *)[cell viewWithTag:2];
   [cellDate setText:[[news objectAtIndex:indexPath.row] objectForKey:@"date"]];       

   UIImageView *cellImage = (UIImageView *)[cell viewWithTag:3];
   NSString *imagePath = [masjid objectForKey:@"thumb"];
   [cellImage setImage:[UIImage imageNamed:[NSString stringWithFormat:@"%@", imagePath]]];

   UITextView *cellText = (UITextView *)[cell viewWithTag:5];
   NSString *postText = [[news objectAtIndex:indexPath.row] objectForKey:@"title"];

   [cellText setText:postText];

   ...

Et la ligne qui déclenche cette exception est :

   [cellText setText:postText];

J'ai vu que cela était dû à une sur-conservation ou une sous-libération, mais je ne trouve pas de moyen d'y remédier.

de l'aide s'il vous plaît ?

Était-ce utile?

La solution

UITextView *cellText = (UITextView *)[cell viewWithTag:5];

Dans cette ligne de code Votre tag pour UITEXTVIEW est "5", je pense avoir donné une carte d'identité différente pour cette vue.Premièrement.

J'ai eu un problème de simuleur ... J'ai trouvé que ma balise était diffrente pour TextView et vue de l'image.

Comment changer de balise pour une vue?

Tout d'abord, sélectionnez la vue (IE UITEXTVIEW) et d'aller à l'onglet Inspecteur d'attribut ..... sous la "vue", vous trouverez "tag" écrire là-bas 5

J'espère que cela peut vous être utile.

Autres conseils

setText est un UITextView méthode non UIImageView.Maintenant, comme mentionné dans le commentaire, le cellText n'est pas un UITextView par exemple, il semble que ce soit UIImageView par exemple, alors vous essayez d'appeler setText méthode d'un UIImageView exemple qui provoque le crash de l’application.Essayez de le tester pour vous assurer :

   UITextView *cellText = (UITextView *)[cell viewWithTag:5];
   if([cellText class] != [UITextView class]){
        cellText = [[UITextView alloc]init];
   }
   NSString *postText = [[news objectAtIndex:indexPath.row] objectForKey:@"title"];

   [cellText setText:postText];

De cette façon, si cellText n'est pas UITextView par exemple, il en lancera un pour vous.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top