Мне нужно отобразить нередактируемый текст с разными стилями и цветами в ячейках табличного представления. В исследованиях кажется, что UIWebView - это способ добиться гибкости стиля / цвета, которую я хочу. Вот что я сделал: (обратите внимание на iOS 5, XCode 4)
- Создан класс WebViewTableViewCell, производный от UITableViewCell. Класс содержит UIWebView.
- В раскадровке я создал контроллер табличного представления с 1 динамическим прототипом ячейки, содержащим объект UIWebView. Ячейка имеет тип WebViewTableViewCell. Я установил связь между классом UIWebView и раскадровкой.
- В коде контроллера табличного представления переопределили "heightForRowAtIndexPath" и использовали "sizeThatFits" для динамического изменения высоты ячейки
Когда я запускаю, все это «работает», за исключением того, что ячейки не меняются, чтобы соответствовать всему тексту, содержащемуся в веб-представлении. На самом деле они не меняют размер; они высота, как показано на раскадровке. Вот пример кода:
cellForRowAtIndexPath:
UITableViewCell *cell = nil;
WebViewTableViewCell *webCell = (WebViewTableViewCell *)[tableView dequeueReusableCellWithIdentifier:@"cellid"];
// Now populate the cell with dynamic data
NSDictionary *thisData = [self.dynamicData objectAtIndex:indexPath.row];
NSString *myString= [NSString stringWithFormat:@"%@. %@",
[thisData objectForKey:@"key1"],
[thisData objectForKey:@"key2"]];
[webCell.webView loadHTMLString:myStringbaseURL:nil];
cell = webCell;
return cell;
heightForRowAtIndexPath:
WebViewTableViewCell *webCell = (WebViewTableViewCell *) [self tableView:a_tableView cellForRowAtIndexPath:indexPath];
// Now that we have the cell, let it determine what its height should be.
CGFloat rowHeight = 45; // default unless if a problem accessing the cell
if( webCell )
{
CGSize size = [webCell.webView sizeThatFits:CGSizeZero];
rowHeight = rowHeight < size.height ? size.height : rowHeight;
}
Еще одна вещь - клетки, хотя и не правильной высоты, прокручиваются. Я хочу сделать их фиксированной высоты, а не прокручиваться.
Есть мысли?
- Джон