2012-11-03 2 views
0

그래서 제가 만들고있는 브라우저 앱에서 UIWebView에 북마크를로드하는 이상한 방법이 있습니다. 책갈피 jQuery과의 didSelectRowAtIndexPath를 들어,이 코드가 있습니다UIWebview가로드 중입니다.

NSUserDefaults *lString = [NSUserDefaults standardUserDefaults]; 
[lString setValue:[bookmarks objectAtIndex:indexPath.row] forKey:@"loString"]; 

를 다음이 코드를 기반으로있는 UIWebView로드 다른 뷰 컨트롤러에 jQuery과에서 선택한 개체에 대한 모달 있습니다. 그래서 문제는 테이블 뷰 객체를 처음 클릭 할 때 UIWebview가 비어있는 것이고 두 번째로 처음 클릭 한 URL이 표시된다는 것입니다. 도와주세요! 감사합니다, 마이클

- (void)viewDidLoad 
{ 
[super viewDidLoad]; 
NSUserDefaults *lString = [NSUserDefaults standardUserDefaults]; 
loadString = [lString valueForKey:@"loString"]; 
NSURL *url = [[NSURL alloc] initWithString:loadString]; 
NSURLRequest *togo = [[NSURLRequest alloc] initWithURL:url]; 
[webView loadRequest: togo]; 

// Do any additional setup after loading the view. 
} 

답변

0

-loadRequest 방법은 주 스레드의 실행을 계속하는 동안 다른 스레드에서 부하를 시작 즉, 비동기입니다.

처음 호출 될 때 첫 번째 요청이 다른 스레드에서 계속 실행 중이므로 빈 화면이 표시됩니다. 두 번째로, 첫 번째 요청이 이제 끝났기 때문에 두 번째 요청이 다른 스레드에서 실행되는 동안이를 보여줍니다. 등등.

URL 내용이로드되는 즉시 화면을 새로 고치려면 UIWebViewDelegate의 -webViewDidFinishLoad 메서드를 구현해야합니다. 이 방법에서는 URL의로드가 완료되었음을 알 수 있습니다. 따라서 웹보기를 새로 고치면 내용이 표시됩니다.

+0

감사합니다. 어떻게해야합니까? – TheMlabTechGuy

+0

안녕하세요, 팁을 사용해 보았습니다.하지만 한 번만 페이지를 다시로드하는 방법이 필요합니다. – TheMlabTechGuy

+0

개체를 UIWebView 개체의 대리자로 할당해야합니다. 이 대리자 객체는 응용 프로그램이나 다른 비 뷰 객체에 의해 유지되어 가비지 수집되지 않도록해야합니다. UIWebViewDelegate 프로토콜을 준수하도록 선언해야합니다. 구현해야 할 유일한 방법은'-webViewDidFinishLoad :'메소드입니다.이 메소드는 인수로 webView 객체에 대한 포인터를 전달합니다. 그 방법을 사용하려면 webView를 다시 그려야한다는 것을 시스템에 경고하기 위해 '[webView setNeedsDisplay]; '을 호출하면됩니다. – chapka

관련 문제