Я строю таблицу с некоторым текстом, который представляет собой HTML, поэтому я использую UIWebView в качестве подпредставления моих пользовательских ячеек таблицы. Я уже столкнулся с одной проблемой - когда я прокручивал таблицу, UIWebViews потребовалась бы секунда для обновления. Например, я бы просматривал ячейки в строках с номерами 1, 2 и 3. Я прокрутил бы вниз, чтобы сказать 8, 9 и 10. На мгновение содержимое UIWebView, которое было видно в ячейке № 8, было содержимое ячейки № 1, содержимое ячейки № 9 было содержимым ячейки № 2 и т. д.
Я узнал, что проблема в том, что UIWebViews просто медленно отображают свой текст. Вместо этого было предложено предварительно загрузить содержимое в UIWebView, как только смогу, вместо того, чтобы ждать, пока таблица получит cellForRowAtIndexPath. Итак, теперь у меня есть доменный объект, у которого раньше было только текстовое содержимое WebView, но теперь он фактически имеет ссылку на сам UIWebView.
Но теперь часть содержимого в UIWebView отображается, и когда я прокручиваю таблицу, UIWebView отображается только в виде серого прямоугольника. Если я коснусь серого поля, оно на самом деле получит прикосновение и обновит WebView - например, если я коснусь ссылки (что я могу или не могу сделать, так как поле серое и это будет удачей), страница, на которую была сделана ссылка, будет запрошена и отображена правильно.
- (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];
}