2011-07-04 2 views
4

첫 번째 컨트롤러는 viewcontroller보기 기반 응용 프로그램을 만들고 로그인 화면 다음에보기 다음 tabbar 컨트롤러 및 나는 해당 tabbar 2 탭 모음 항목이 있습니다. 이 모든 것이 정상적으로 작동 할 때까지는. 이제이 두보기 사이를 전환하면 , viewDidUnload은 이전 탭을 클릭하지 않습니다.viewDidUnload, viewWillDisappear tabBarContoller에서 호출되지 않았습니다.

P.S.ViewwillAppear이 호출되지 않았으므로 기본 알림으로 호출했습니다. 문제가 무엇인지 모릅니다. 나는 나의 질문에 분명하다.

+0

UITabBarController의 뷰를 전면 뷰로 만들기 위해 무엇을 부르시겠습니까? – ThomasW

+0

당신은 (BOOL) 애니메이션을 잊었습니까? – sturza

+0

이와 비슷한 문제가 있으며 여기 내 대답은 다음과 같습니다. http://stackoverflow.com/a/33701499/1035899 – c0d3Junk13

답변

6

우선 UITabBarController에서보기를 전환 할 때보기가 실제로 언로드되지 않기 때문에 viewDidUnload 함수가 호출되지 않습니다. 그래서, 이것은 정상입니다.

상자의 내용물은 viewWillAppear/viewDidDisappear입니다. 그러나 잡기가있다. 보기를 표시하는 방법에 따라 viewWillAppear/viewDidDisappear이 프레임 워크에서 호출되지 않았을 수 있습니다. 예를 들어,보기를 하위보기로 추가했지만 더 많은 경우가 발생합니다. 나는 당신이 당신의 탭 표시 줄을 어떻게 표시하는지 모른다. 그래서 그것에 대해 더 구체적으로 말할 수 없다.

이 문제를 해결하기위한 쉬운 해결책은 탭 표시 줄 컨트롤러 델리게이트의 tabBarController:didSelectViewController: 선택기를 재정의하는 것입니다. 거기에서 자신 만의 로직을 구현하거나 viewDidDisappear으로 전화 할 수 있습니다.

+0

@ sergio 님의 의견을 보내 주셔서 감사합니다. 내가 viewDidDisappear 기본 알림 (내가 vieWillAppear 메서드를 호출 같은) 호출해야합니다. 나는 그 잘못된 길을 가정. 그 올바른 방법은 다음 내가 그렇게 할 수있는 방법. – mrugen

0

UINavigationController가 있습니까? 너는 하나도 언급하지 않는다. UINavigationController를 사용하지 않는다면 UITabBarController가 topViewController로 제대로 설정되지 않을 가능성이 있습니다.

1

MainWindow.xib에 TabBar 컨트롤러를 배치해야합니다.

먼저이처럼 RootViewController를 추가합니다 loginscreen 당신이 보여

[self.window addSubview:self.rootview.view]; 

그리고 로그인이 완료되면 당신은 MainWindow를에서 RootViewController를 제거하고이 같은 MainWindow를에 TabBarController를 추가 할 수 있습니다

[self.rootview.view removeFromSuperview]; 
    [self.window addSubview:self.tabBarController.view]; 
관련 문제