워드 프로세서 바로,하지만 매우 불완전하다. 여기에 무슨 일이 일어나고 있는지. 웹 뷰 상태 복원에 참여하는 경우 (난 당신이 무엇을 의미하는지 알고 있으리라 믿고있어 - 모든 등등 restorationIdentifier
을 가지고 있고,), 웹보기 (아닌 HTML 문자열을) 요청이 있다면 사용자가를 떠날 때 앱을 사용하면 웹보기는 자동으로 request
속성과 동일한 요청을 포함하는 수명으로 돌아가며 뒤로 및 앞으로 목록이 그대로 유지됩니다. 따라서 상태 복원 메커니즘을 사용하여 웹보기의 상태를 복원 할 수 있지만 약간의 추가 춤을 수행해야합니다. 이 춤은 너무 호기심이 많고 애매한 데, 처음에는 웹 뷰의 상태를 문서화가 가능하다는 주장에도 불구하고 실제로 저장하고 복원 할 수 없다는 인상하에있었습니다.
여기에 두 가지 비밀이있다; 일단 웹 사이트 상태를 확인하면 웹보기 상태 복원을 이해하게됩니다.
웹 뷰 상태 복구 전략을 쉽게 수립 할 수 있습니다. 우선 우리가 상태를 복원하는 것을 감지하고, 그 그렇게 말한다 플래그를 인상하는 것입니다 : 우리가 상태를 복원하는
-(void)decodeRestorableStateWithCoder:(NSCoder *)coder {
[super decodeRestorableStateWithCoder:coder];
self->_didDecode = YES;
}
이제 우리는 (아마도 viewDidAppear:
에서) 감지 할 수 있으며, 웹보기 마술을 포함 요청을로드하고 해당 요청을로드하십시오.
if (self->_didDecode && wv.request)
[wv loadRequest:wv.request];
이제 까다로운 부분이 있습니다. 뷰가로드 된 후 즉시 "돌아갑니다." 이것은 실제로 사용자의 이전 스크롤 위치를 복원하고 Back 스택의 맨 위에서 추가 항목을 제거하는 효과가 있습니다.
- (void)webViewDidFinishLoad:(UIWebView *)wv {
if (self->_didDecode && wv.canGoBack)
[wv goBack];
self->_didDecode = NO;
}
있는 UIWebView는 사용자가 이전에 응용 프로그램을 왼쪽 때의 상태에 지금을 : 우리는 다른 시간에 이러한 추가 이동을하지 않도록 우리는 우리의 깃발을 내립니다. 내장 된 iOS 6 상태 저장 및 복원 기능을 사용하여 상태를 저장하고 복원했습니다.
내 대답보다 낫다. – matt
누구나 무슨 일이 일어나고 있는지 그리고 코드가 어디에 표시되는지 이해하려면 Matt의 대답을 읽어야합니다. 그의 "loadRequest"호출을 "reload"로 바꿉니다. – jasonjwwilliams