Frage

Ich bin nicht sicher, ob dies ein guter Weg zu gehen, ... Ich habe einige Daten i aus dem Internet empfangen, die wiederum eine Tabellenansicht auffüllt. Das Problem ist, der Text ist HTML (p-Tags, etc.). Mein erster Gedanke war eine UIWebView in der Zelle zu erstellen, und füllen Sie mit loadHTMLString. Tatsache ist, dass es funktioniert KINDA. Aber, ich dann die Zelle nicht länger war der Empfänger berührt.

SO, bevor wir zu tief in Code zu bekommen, gibt es eine bessere Möglichkeit, die Zellen zu füllen, als eine UIWebView verwenden. Es fühlt sich an wie ein Hack, und ich fürchte, auch wenn es funktioniert, Apfel es abwenden würde.

// aus meiner benutzerdefinierten UITableViewCell Klasse:

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

}

Dank

War es hilfreich?

Lösung

es sei denn, jemand da draußen rebuttle hat, ich habe festgestellt, dass eine UIWebView in einer UITableViewCell ist keine gute Idee. Wenn auch nur, habe ich mit nicht getestet lokalem htmlString ...

Andere Tipps

Wir haben einen gewissen Erfolg mit WebViews in Zellen hatten. Wenn Sie die Zelle Berührungsereignisse empfangen möchten, müssen Sie die Webansicht des userInteractionEnabled Eigenschaft auf NO setzen. Sie müssen auch eine andere reuseIdentifier für jede Zelle verwenden, da die Webansicht einige Zeit dauert, seinen Inhalt zu laden und erhalten erneut verwendet werden kann, bevor es fertig ist.

Ich habe dies getan, indem statisch, sobald die Webansicht-Zellen Zuteilung wie ich weiß, wie viele ich für die Tabelle benötigt, und starten Sie sie alle Off-Screen-Laden. Keine Wiederverwendung Identifikatoren, müssen Sie den Überblick über die Zellen zu halten und wo sie sich gehen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top