Question

Je ne sais pas si c’est un bon chemin à suivre, ... j’ai des données que je reçois du Web et qui, à leur tour, remplissent une vue tableau. Le problème est que le texte est html (balises p, etc.). Ma première pensée a été de créer une uiwebview dans la cellule et de la remplir avec loadHTMLString. Le fait est que KINDA fonctionne. Mais, alors la cellule n’était plus le destinataire de contacts.

SO, avant d’avoir un code trop profond, existe-t-il un meilleur moyen de remplir les cellules que d’utiliser un UIWebView. On se croirait dans un bidouillage et je crains que même si cela fonctionne, Apple le détournerait.

// de ma classe UITableViewCell personnalisée:

- (id)initWithFrame:(CGRect)frame reuseIdentifier:(NSString *)reuseIdentifier {
if (self = [super initWithFrame:frame reuseIdentifier:reuseIdentifier]) {
    [self setFrame:frame];

    webcell = [[UIWebView alloc] initWithFrame:CGRectMake(0,0,frame.size.width-20,frame.size.height)];
    [self.contentView addSubview:webcell];

    //bloack the webview from touches
    UIView *cover = [[UIView alloc] initWithFrame:webcell.frame];
    [self.contentView addSubview:cover];
    [cover release];
}
return self;

}

- (void) setLabelData: (FeedItem *) feedItem {     link = feedItem.link;

NSMutableString *htmlstring = [NSMutableString string];
[htmlstring appendString:@"<html><head><link rel='stylesheet' href='style.css'/></head><body>"];
[htmlstring appendFormat:@"<p>%@</p>",feedItem.title];
[htmlstring appendFormat:@"<p>%@</p>",feedItem.description];
[htmlstring appendString:@"</body></html>"];
[webcell loadHTMLString:htmlstring baseURL:[NSURL fileURLWithPath:[[NSBundle mainBundle]bundlePath]]];

}

merci

Était-ce utile?

La solution

À moins que quelqu'un ne répugne, j'ai conclu qu'un UIWebView dans un UITableViewCell n'est pas une bonne idée. Bien que je n’ai pas testé avec une chaîne htmlString locale ...

Autres conseils

Nous avons eu un certain succès en utilisant des vues Web dans des cellules. Si vous souhaitez que la cellule reçoive des événements tactiles, vous devez définir la propriété userInteractionEnabled de la vue Web sur NO. Vous devez également utiliser un identifiant de réutilisation différent pour chaque cellule, car la visualisation Web prend un certain temps pour charger son contenu et peut être réutilisée avant d'être prête.

Je l'ai fait en allouant de manière statique les cellules Webview dès que je sais combien il en faudra pour la table et en les démarrant toutes en les chargeant hors écran. Aucun identifiant de réutilisation, vous devez garder une trace des cellules et de leur cheminement.

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