Я думаю, что
.add(Calendar.WEEK_OF_YEAR,2);
является правильным, хотя я бы сделал некоторые тесты на то, как он ведет себя во время смены года
Один из способов справиться с этим - использовать несколько UILabel, каждый с разными шрифтами. Затем стратегически разместите их внутри ячейки, чтобы они казались непрерывным текстом. Я видел это в UITableView с очень хорошими результатами.
Другая проблема производительности может заключаться в том, что вы переопределяете UItableViewCell и его метод инициализации. Это почти всегда приводит к снижению производительности в UITableView. Вместо этого просто используйте обычные экземпляры UITableViewCell и добавьте подвиды в его contentView.
Это подробно рассмотрено Мэттом Галлахером Easy Custom UITableView Drawing .
Другой описанный метод заключался в использовании Three20, который также может предоставить вам стилизованный текст.
То, что вы пытаетесь сделать в настоящее время, не может быть выполнено с UIWebview.
Предварительная загрузка не поможет: это замедлит пользовательский интерфейс, когда UIWebviews отображается вне экрана; вы всегда должны практиковать отложенную загрузку на iPhone.
Включение UIWebviews в UITableView приведет к потенциально неприемлемому снижению производительности. Вам нужно будет использовать другие средства для достижения вашей цели.
К сожалению, NSAttributedString недоступна в UIKit, что может легко решить вашу проблему.
Это не отвечает на исходный вопрос, который задают, но отходит на один шаг и смотрит на большее изображение, при попытке отобразить гиперссылку в ячейке таблицы, которая означает, когда Вы нажимаете на него, это открывает веб-браузер? Это было бы то же при показе разработанного текста в ячейке таблицы, которая похожа или намекает на ссылку, но откройте отдельный экран с полноэкранным веб-представлением, которое позволяет Вам коснуться на ссылке?
Вы сказали 'названный setRowAtIndexPath', Вы могли бы иметь в виду 'cellForRowAtIndexPath', который является методом UITableView, названным, когда строка становится видимой и должна создать ячейку. Удостоверьтесь, что в этом методе Вы правильно инициализируете и обновляете содержание ячейки.
Вы изучили переопределение метода-prepareForReuse на Вашем подклассе ячейки таблицы? Если ячейки, кажется, не обновляют, когда Вы прокручиваете, возможно, что содержание допускающих повторное использование ячеек не очищается и сбрасывается.
Если контент в веб-представлении ограничен стилизованным текстом или гиперссылками, вы можете захотеть чтобы взглянуть на проект Three20: http://github.com/joehewitt/three20/tree/master
Его класс TTStyledText
поддерживает , < i>, и
в содержимом. Вероятно, более легкий, чем веб-просмотр.
Насколько я понимаю, WebView не будет отображаться, если вы не инициируете его загрузку ПОСЛЕ того, как произойдет viewDidLoad ().
Итак, вот мой обновленный ответ: я реализовал таблицу, используя один большой 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];
}