Pregunta

no estoy seguro de si esta es una buena ruta, ... tengo algunos datos que recibo de la web que, a su vez, pueblan una vista de tabla. El problema es que el texto es html (etiquetas p, etc.). Lo primero que pensé fue crear una vista uiwebview en la celda y llenarla con loadHTMLString. El hecho es que KINDA funciona. Pero, entonces la celda ya no era el destinatario de toques.

SO, antes de profundizar demasiado en el código, ¿hay una mejor manera de poblar las celdas que usar un UIWebView? Se siente como un truco, y me temo que incluso si funciona, Apple lo rechazaría.

// de mi clase UITableViewCell personalizada:

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

}

gracias

¿Fue útil?

Solución

a menos que alguien por ahí haya rebatido, he concluido que un UIWebView en un UITableViewCell no es una buena idea. Aunque, no he probado con un htmlString local ...

Otros consejos

Hemos tenido cierto éxito al usar vistas web en las celdas. Si desea que la celda reciba eventos táctiles, debe establecer la propiedad userInteractionEnabled de la vista web en NO. También debe usar un reuseIdentifier diferente para cada celda, ya que la vista web tarda un tiempo en cargar su contenido y puede reutilizarse antes de que esté lista.

He hecho esto asignando estáticamente las celdas de vista web tan pronto como sé cuántas necesitaré para la tabla, y empiezo a cargarlas todas fuera de la pantalla. Sin identificadores de reutilización, debe realizar un seguimiento de las celdas y de dónde van usted mismo.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top