[UIImageView setText :] :sélecteur non reconnu envoyé à l'instance
-
13-12-2019 - |
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 ?
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.