2011-04-08 2 views
0

NIB 파일을 사용해야 할 때와 코드를 사용해야하는 경우에 대해 다소 혼란스러워집니다. 여기 내 문제가 :iPhone : nib file + code = mix up

나는 RootController와 해당 NIB 파일과 탐색 기반 응용 프로그램을했습니다. RootController의 NIB 파일에 TableView가 포함되어 있습니다. 셀을 클릭하면 콘텐츠를로드하라는 요청으로 새 연결을 초기화합니다. 연결이 완료 로딩 나는 NIB 파일에서 새 postViewController (사용자 정의)를 만들고 그 같은 스택있는 navigationController의 ViewController에 밀어 :

PostViewController *postViewController = [[PostViewController alloc] initWithNibName:@"PostViewController" bundle:[NSBundle mainBundle]]; 

[postViewController.webView setDelegate:self]; 

postViewController.postContent = [[postsData objectForKey:@"post"] objectForKey:@"content"]; 

[self.navigationController pushViewController:postViewController animated:YES]; 

[PostViewController release]; 

을 그런 다음 나는 rootViewController를 설정하려고 볼 수 링크에 대한 클릭을 가로 채고 스택에 새 ViewController를 푸시 할 수 있으려면 webView의 델리게이트로 사용합니다. 뒤로 버튼이있는 탐색 모음을 갖기 위해서는 새로운보기가 필요합니다.

문제점 : webView : shouldStartLoadWithRequest : navigationType이 호출되지 않기 때문에 setDelegate가 작동하지 않는 것 같습니다.

NIB 파일에서 대리인을 설정해야한다고 생각하지만 잘 모릅니다. 당신이 더 필요한 경우

RootViewController.xib

PostViewController.xib (File's Owner)

PostViewController.xib (Web View)

: PostViewController에서 NIB 파일은 여기에 NIB 파일의 스크린 샷은 ... RootViewController에 대해

을 모르는 자세히 말해봐.

고마워 ... 내가 당신이 그것에 setDelegate:를 호출 할 때 postViewController.webView이 전무되지 않았는지 확인 다른 날 :

+1

위임자를 설정할 때 postViewController.webview가 있는지 확인 했습니까? 보기가 아직로드되지 않았기 때문에 나는 그것이 0이 될 것입니다.그렇다면 PostVC 내부의 속성을 사용하는 것과 같이 RVC를 PostVC의 Webview 대리자로 설정하는 다른 방법을 찾아야하며 PostVC는 내가 생각한 ViewDidLoad 메서드에서 Webview 대리자를 설정해야합니다 – scalbatty

+0

사실 NAB의 콘센트 webView가 nil이 아니어야합니다 (필자는 생각합니다). nib 파일에 문제가있을 수 있습니까? –

+0

@Luzal : 당신이 맞습니다, postViewController.webView는 델리게이트로 설정할 때 nil입니다. 당신이 그 주제에 관해 나에게 줄 약간의 충고를 가지고 있으면 나는 그런 종류의 문제를 가지고있다, 나는 그들에게 듣기를 기뻐할 것이다. ... – teum

답변

1

[postViewController.webView setDelegate:self];는 전류 제어부하지 postViewController 대리자를 설정한다. 이미 존재해야 다음 웹보기를

[postViewController.webView setDelegate:postViewController]; 

을 그리고 당신은 pushViewController:animated: 아래에이 줄을 넣을 수 있습니다 :보십시오.

+0

당신의 목적이 RVC를 위임자로 갖는 것이지만, 좋은 MVC 코드 설계를 위해서는 다른 사람이 아닌 자신의 콘텐츠에 대한 책임이 있어야합니다. –

+0

나는 그것이 그렇게 느껴져서 그런 식으로 만들려고 노력했지만 다른 문제가 생겼다. (나는 지금 기억한다.). 나는 [여기] (http://stackoverflow.com/questions/5619755/iphone-webviewshouldstartloadwithrequestnavigationtype-timing-problem)에 대한 다른 질문을 제출했다. – teum

+0

다른 문제도 해결되었습니다. 도움을 주셔서 감사합니다. – teum

3

내 머리를 두드리는하지 돕는. 또한 다른 곳에서는 호출되지 않도록하고 대리자 콘센트가 담당자의 아무 것도 연결되어 있지 않은지 확인하십시오.

몇 가지 다른 의견 :

  1. 그것은이 같은 경우에 웹보기의 대리인으로 루트 뷰 컨트롤러를 사용하는 특별한 조금이다. 작동해야하지만 위임 메소드를 PostViewController로 옮기는 것이 더 합리적 일 수 있습니다. 거기에서 여전히 링크 클릭 수를 가로 채고 [self.navigationController pushViewController:animated:]으로 전화 할 수 있습니다.

  2. [PostViewController release]은 클래스 개체를 해제합니다. 별로 좋은 생각이 아닙니다. 대신 [postViewController release]으로 전화해야합니다.

+0

예, 무효입니다. 하지만 다른 곳에서는 호출되지 않고 대리인 아울렛은 내 NIB의 어떤 것과도 연결되지 않습니다. 1. 그것이 내가 생각한 것입니다. 그런 다음 모든 것을 PostViewController로 옮기려고 시도했지만 거기에서 Web View Delegate를 만드는 데 실패했습니다. 내가 어디에서 그것을 기억하고 어떻게 (어쩌면 무언가가 잘못되었다는) 기억이 안나, 작동하지 않아서 모든 것을 바꿨다. 2. True : o (또는 YES라고 말해야합니까?) – teum

+0

실제로 모든 것을 PostViewController로 옮겼지만 다른 문제가 발생했습니다. 나는 [여기] (http://stackoverflow.com/questions/5619755/iphone-webviewshouldstartloadwithrequestnavigationtype-timing-problem)에 대한 다른 질문을 제출했다. – teum

+0

다른 문제도 해결되었습니다. 도움을 주셔서 감사합니다. – teum