Sto costruendo una tabella con del testo che è HTML, quindi sto usando una UIWebView come sottoview delle mie celle di tabella personalizzate. Ho già avuto un problema: mentre scendevo nel tavolo, l'UIWebViews avrebbe richiesto un secondo per l'aggiornamento. Ad esempio, visualizzerei Celle alle righe numerate 1, 2 e 3. Scorrerei verso il basso per dire 8, 9 e 10. Per un momento, il contenuto di UIWebView che era visibile nella cella n. 8 era il contenuto della cella n. 1, il contenuto nella cella n. 9 era quello dalla cella n. 2 e così via.Come utilizzare un UIWebView in una cella di tabella?
Ho appreso che il problema era che UIWebViews semplicemente rendeva il testo lentamente. È stato suggerito invece di precaricare il contenuto in UIWebView non appena possibile invece di aspettare finché la tabella non riceva cellForRowAtIndexPath. Quindi, ora ho un oggetto dominio che prima aveva solo il contenuto testuale di WebView - ma ora ha effettivamente un riferimento a UIWebView stesso.
Ma ora alcuni dei contenuti nel rendering UIWebView e quando si scorre la tabella UIWebView mostra solo una casella grigia. Se tocco la casella grigia, riceverà effettivamente il tocco e aggiornerò la visualizzazione Web, ad esempio se toccherò un collegamento (cosa che potrei o non potrei fare, poiché la casella è grigia e sarebbe un colpo di fortuna), la pagina a cui è stato collegato sarà richiesta e visualizzata correttamente.
- (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];
}
Ho finito per accettare questo b/c della realtà che questo non era qualcosa che può essere fatto con un UIWebView. Personalmente ho finito per abbandonare la funzione, ma la rivedrò presto - e quello che farò invece di usare un TableView è semplicemente simularlo usando HTML e CSS, e metterlo in una singola WebView. Quindi userò un WebViewDelegate per ordinare i clic "intercettati" sui collegamenti e determinare se mostrare altro contenuto Web o fare qualche altra azione nella mia applicazione. – bpapa