HTML 인 텍스트가있는 테이블을 만들고 있으므로 사용자 정의 테이블 셀의 하위 뷰로 UIWebView를 사용하고 있습니다. 이미 한 가지 문제에 부딪 혔습니다. 테이블에서 아래로 스크롤하면 UIWebViews를 업데이트하는 데 걸리는 시간이 단축됩니다. 예를 들어 번호가 1, 2 및 3 인 행에서 셀을 볼 수 있습니다. 아래로 스크롤하면 8, 9 및 10이됩니다. 잠시 동안 셀 # 8에서 볼 수있는 UIWebView의 내용은 셀 # 1의 컨텐츠, 셀 # 9의 컨텐츠는 셀 # 2의 컨텐츠 등이었습니다.Table Cell에서 UIWebView는 어떻게 사용합니까?
UIWebViews가 텍스트를 천천히 렌더링한다는 문제가 있다는 것을 알았습니다. 대신에 테이블이 cellForRowAtIndexPath를 수신 할 때까지 기다릴 수있는 대신 UIWebView에 내용을 미리로드하는 것이 좋습니다. 이제는 WebView의 텍스트 콘텐트를 갖기 전의 Domain Object가 있습니다.하지만 이제는 실제로 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];
}
나는 이것이 UIWebView로 할 수있는 것이 아니라는 사실을이 사실로 받아 들였다. 개인적으로 필자는이 기능을 포기하고 있지만 곧 다시 방문 할 것입니다. TableView를 사용하는 대신 HTML과 CSS를 사용하여 시뮬레이트하고 하나의 WebView에 넣는 것입니다. 그런 다음 WebViewDelegate를 사용하여 링크에서 "가로 채기"클릭을 정렬하고 다른 웹 컨텐트를 표시할지 또는 내 응용 프로그램에서 다른 작업을 수행할지 결정합니다. – bpapa