Comment utiliser un UIWebView dans une cellule de tableau?

Je suis en train de construire un tableau avec du texte qui est en HTML, donc je suis en utilisant une UIWebView comme une sous-vue de ma coutume cellules d'un tableau. J'ai déjà couru dans un problème - comme je défile vers le bas dans le tableau, ce serait prendre le UIWebViews une seconde pour mise à jour. Par exemple, je serais la visualisation de Cellules à des lignes numérotées 1, 2, et 3. J'avais faites défiler vers le bas-à-dire 8, 9, et 10. Pour un moment, le contenu de la UIWebView qui était visible dans la cellule n ° 8 a été le contenu de la cellule #1, le contenu dans la cellule n ° 9 a été qu'à partir de la cellule n ° 2, et ainsi de suite.

J'ai appris que le problème était que UIWebViews simplement rendre leur texte lentement. Il a été suggéré à la place de la précharge du contenu dans la UIWebView dès que j'ai pu, au lieu d'attendre jusqu'à ce que la table reçoit le cellForRowAtIndexPath. Alors maintenant, j'ai un Objet de Domaine qui eu juste le contenu du texte de la WebView - mais maintenant, elle a en fait une référence à la UIWebView lui-même.

Mais maintenant partie du contenu de la UIWebView rend, et quand j'ai faites défiler la table de la UIWebView montre seulement comme une zone grise. Si je touche la zone grise, il va recevoir le toucher et la mise à jour de la WebView - par exemple, si je touche un lien (que je peut ou ne peut pas faire, car la case est grise et qu'il le serait par un coup de chance), la page qui a été lié à sera demandé et les affiche correctement.

- (id)initWithFrame:(CGRect)frame reuseIdentifier:(NSString *)reuseIdentifier {
if (self = [super initWithFrame:frame reuseIdentifier:reuseIdentifier]) {
            //I suppose this isn't necessary since I am just getting it from the
            //Domain Object anyway
    content = [[UIWebView alloc] initWithFrame:CGRectZero];
    content.backgroundColor = [UIColor blackColor];
    [self addSubview:content];
    [content release];
}
return self;
}

//called by cellForRowAtIndexPath 
- (void)setMyDomainObject:(MyDomainObject*)anObject {
UIWebView *contentWebView = anObject.contentWebView;
int contentIndex = [self.subviews indexOfObject:content];
[self insertSubview:contentWebView atIndex:contentIndex];
}

source d'informationauteur bpapa | 2009-03-14