Как я использую UIWebView в Ячейке таблицы?

Я думаю, что

.add(Calendar.WEEK_OF_YEAR,2);

является правильным, хотя я бы сделал некоторые тесты на то, как он ведет себя во время смены года

16
задан bpapa 16 March 2009 в 15:19
поделиться

7 ответов

Один из способов справиться с этим - использовать несколько UILabel, каждый с разными шрифтами. Затем стратегически разместите их внутри ячейки, чтобы они казались непрерывным текстом. Я видел это в UITableView с очень хорошими результатами.

Другая проблема производительности может заключаться в том, что вы переопределяете UItableViewCell и его метод инициализации. Это почти всегда приводит к снижению производительности в UITableView. Вместо этого просто используйте обычные экземпляры UITableViewCell и добавьте подвиды в его contentView.

Это подробно рассмотрено Мэттом Галлахером Easy Custom UITableView Drawing .

Другой описанный метод заключался в использовании Three20, который также может предоставить вам стилизованный текст.

То, что вы пытаетесь сделать в настоящее время, не может быть выполнено с UIWebview.

Предварительная загрузка не поможет: это замедлит пользовательский интерфейс, когда UIWebviews отображается вне экрана; вы всегда должны практиковать отложенную загрузку на iPhone.

Включение UIWebviews в UITableView приведет к потенциально неприемлемому снижению производительности. Вам нужно будет использовать другие средства для достижения вашей цели.

К сожалению, NSAttributedString недоступна в UIKit, что может легко решить вашу проблему.

9
ответ дан 30 November 2019 в 22:02
поделиться

Это не отвечает на исходный вопрос, который задают, но отходит на один шаг и смотрит на большее изображение, при попытке отобразить гиперссылку в ячейке таблицы, которая означает, когда Вы нажимаете на него, это открывает веб-браузер? Это было бы то же при показе разработанного текста в ячейке таблицы, которая похожа или намекает на ссылку, но откройте отдельный экран с полноэкранным веб-представлением, которое позволяет Вам коснуться на ссылке?

2
ответ дан 30 November 2019 в 22:02
поделиться

Вы сказали 'названный setRowAtIndexPath', Вы могли бы иметь в виду 'cellForRowAtIndexPath', который является методом UITableView, названным, когда строка становится видимой и должна создать ячейку. Удостоверьтесь, что в этом методе Вы правильно инициализируете и обновляете содержание ячейки.

1
ответ дан 30 November 2019 в 22:02
поделиться

Вы изучили переопределение метода-prepareForReuse на Вашем подклассе ячейки таблицы? Если ячейки, кажется, не обновляют, когда Вы прокручиваете, возможно, что содержание допускающих повторное использование ячеек не очищается и сбрасывается.

0
ответ дан 30 November 2019 в 22:02
поделиться

Если контент в веб-представлении ограничен стилизованным текстом или гиперссылками, вы можете захотеть чтобы взглянуть на проект Three20: http://github.com/joehewitt/three20/tree/master

Его класс TTStyledText поддерживает , < i>, и в содержимом. Вероятно, более легкий, чем веб-просмотр.

тегов в содержимом. Вероятно, более легкий, чем веб-просмотр.

тегов в содержимом. Вероятно, более легкий, чем веб-просмотр.

4
ответ дан 30 November 2019 в 22:02
поделиться

Насколько я понимаю, WebView не будет отображаться, если вы не инициируете его загрузку ПОСЛЕ того, как произойдет viewDidLoad ().

0
ответ дан 30 November 2019 в 22:02
поделиться

Итак, вот мой обновленный ответ: я реализовал таблицу, используя один большой UIWebView, чтобы поместить стилизованный текст в ячейки таблицы в моем собственном клиентском приложении Twitter, HelTweetica (с доступным источником). Он работает очень хорошо, если вы понимаете, как делать макет в HTML и CSS.

Вы просто создаете NSMutableString и добавляете строки HTML, из которых состоит ваш документ. Вы можете ссылаться на внешние файлы, такие как файлы CSS, которые находятся в песочнице вашего приложения. Вы можете настроить пользовательские действия URL, такие как "youraction: //file.txt", которые ваш делегат веб-представления может перехватывать и обрабатывать в качестве замены IBAction s:

- (void) refreshWebView {
    TwitterAccount *account = [twitter currentAccount];
    NSMutableString *html = [[NSMutableString alloc] init];
    // Open html and head tags
    [html appendString:@"<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n"];
    [html appendString:@"<html xmlns=\"http://www.w3.org/1999/xhtml\" xml:lang=\"en\" lang=\"en\">\n"];
    [html appendString:@"<head>\n"];
    [html appendString:@"<meta name='viewport' content='width=device-width' />"];
    [html appendString:@"<link href='style-ipad.css' rel='styleSheet' type='text/css' />"];
    [html appendString:@"<script language='JavaScript' src='functions.js'></script>"];

    // Body
    [html appendString:@"</head><body><div class='artboard'>"];

    // [...]

    // Close artboard div, body. and html tags
    [html appendString:@"</div></body></html>\n"];

    NSURL *baseURL = [NSURL fileURLWithPath: [[NSBundle mainBundle] bundlePath]];
    [self.webView loadHTMLString:html baseURL:baseURL];
    [html release];
}

И вы можете перезагружать части страницы, используя javascript:

- (void) refreshTabArea {
    NSString *html = [self stringByEscapingQuotes: [self tabAreaHTML]];
    NSString *js = [NSString stringWithFormat: @"document.getElementById(\"tab_area\").innerHTML = \"%@\";", html];
    [self.webView stringByEvaluatingJavaScriptFromString:js];
}
6
ответ дан 30 November 2019 в 22:02
поделиться
Другие вопросы по тегам:

Похожие вопросы: