2011-03-10 3 views
4

저는 선택한 부서의 종족 이름을 표시하는 UITableView가 있습니다. TableView에서 사람을 선택하면 모든 연락처 정보가있는 레이블이있는 세부 정보 페이지가로드됩니다. 하단의 UIWebView에서 웹 사이트를로드합니다.UIWebView는 새 URL을로드하지 않습니다.

사람을 선택하고 정보를 확인한 다음 돌아가서 같은 부서에서 다른 사람을 선택하면 UIWebView가 새로 선택된 사람의 웹 사이트를 다시로드하지 않고 처음 선택된 사람의 사이트에 남아 있습니다.

나는이 일을하기 위해 밤새도록 노력했다. 나는 그 무언가 간단하다고 확신합니다.

나는 webView를 nil로 설정하고 viewDidDisappear 및 viewWillDisappear (보기 후 사람들 목록으로 돌아갈 때 호출되는 것들)에서 해제하려고 시도했다.

이 설정은 UINavigationController로 설정되어 있습니다.

선택한 사람의 레이블이 선택한 사람의 모든 세부 정보를 업데이트하지만 UIWebView는 다시로드하지 않으려 고합니다. 어떤 도움을 주셔서 감사합니다!

편집 죄송합니다 제가 롤이를 게시 할 때 그것은 너무 늦었다, 코드를 추가하는 것을 잊었다. 하지만 여기서 내 모든 라벨과 사물들이 업데이트됩니다. (나는이 라인들을 정리하여 여기에 정리했습니다.)

-(void)viewWillAppear:(BOOL)animated 
{ 
    NSLog(@"willAppear"); 
    [[self navigationItem] setTitle:[selectedPerson professorLName]]; 

url = [[NSURL alloc] initWithString:[selectedPerson departmentWebsite]]; 
NSLog(@"%@", url); 
req = [[NSURLRequest alloc] initWithURL:url]; 
[webView loadRequest:req]; 
webView.scalesPageToFit = YES; 

} 

- (void)viewWillDisappear:(BOOL)animated 
{ 
    NSLog(@"willDis"); 
    [super viewWillDisappear:animated]; 
    [webView release]; 
    webView = nil; 
url = nil; 
} 

- (void)viewDidDisappear:(BOOL)animated 
{ 
    NSLog(@"didDisappear"); 
    [super viewDidDisappear:animated]; 
    [webView release]; 
    webView = nil; 
    url = nil; 
} 
+0

질문에 코드를 포함하는 것을 잊어 버린 것 같습니다. –

답변

2

viewWillDisappearviewDidDisappear에서 코드를 제거하고,이 시도 : 당신이 -viewWillAppear에 넣고 경우 (어떤 경우) 당신이 탭을 전환 할 때, 페이지가 다시로드됩니다

-(void) viewWillAppear:(BOOL)animated { 
    [super viewWillAppear:animated]; 
    [self.webView loadRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:selectedPerson.departmentWebsite]]]; 
} 

명심하거나 응용 프로그램이 전경에 온다. 이러한 이유로, 자세히보기 컨트롤러를 누를 때 url을로드하는 것을 선호합니다.

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { 
     SimpleWebViewController* detailViewController = [[SimpleWebViewController alloc] initWithNibName:@"SimpleWebView" bundle:nil]; 
     [self.navigationController pushViewController:detailViewController animated:YES]; 
     [detailViewController.webView loadRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:url]]]; 
     [detailViewController release]; 
    } 
} 

희망이 있습니다.

+0

나는 당신이하고있는 것을 시도했지만 여전히 페이지를 다시로드하지는 않습니다. 페이지가 다시로드되지 않을 때 나는 깨달았다. 상세 뷰가 푸시되면 인스턴스가 두 개 있습니다. 부서를 선택한 다음 사람을 선택하면 각 사람마다 WebView가 다시로드됩니다. 이름으로 검색 할 수도 있습니다. Ryan을 검색하면 4 개의 이름이 나옵니다. 여기에서 사람을 선택한 경우에만 돌아가서 검색 결과에서 webView가 다시로드하지 않는 다른 사람을 선택하십시오. 설명하기가 어렵지만 잘만하면 알 수 있습니다. – RyanG

+0

부서 웹 사이트를 별도의 UIWebView에로드하는 버튼을 추가하여 세부 정보 뷰의 작은 UIWebView에로드하는 대신 이슈를 해결했습니다. – RyanG

0

url을 콘솔에 침투하십시오. 동일한 URL을 전달하는 것처럼 들립니다.
예, fluchtpunkt가 맞았으므로 코드를 볼 수 있습니다.

+0

당신이 볼 수 있듯이, 콘솔에 URL을 뱉어 내고 있고, 선택된 사람에 대한 정확한 URL을 출력하고 있지만,로드하지 않는 이유, 내가 혼란스러워하는 이유, 요청이 매번 다시로드되지 않습니다. – RyanG

+0

webview가 실제로 동일한 페이지를 다시로드하거나 기존 콘텐츠로 정적 상태를 유지합니까? –

+0

기존 내용이 정적 인 채로 남아 있습니다. 여러 곳에서 강제로 다시로드하려고 시도했지만 얻을 수 없습니다. – RyanG

관련 문제