0

두 개의 탭이있는 탭 바 컨트롤러가 있다고 가정 해 봅니다.다른 UITabbar에서 네비게이션 컨트롤러 스택 조작하기

첫 번째 탭에는 내비게이션 컨트롤러가 있습니다.

두 번째 탭에서 첫 번째 탭의 탐색 컨트롤러를 첫 번째보기로 팝하는 방법은 무엇입니까?

이 나는 ​​시도했다 : 어떤 성공

for (UIViewController *vc in self.tabBarController.viewControllers) { 
    [vc.navigationController popToRootViewControllerAnimated:NO]; 
} 

.

감사합니다.

답변

1
UINavigationController *navController = [self.tabBarController.viewControllers objectAtIndex:0]; 
[navController popToRootViewControllerAnimated:YES]; 
+0

않을까요'[self.tabBarController.viewControllers objectAtIndex : 0] 이후 첫 번째 줄의 원인 유형의 호환성,의''UIViewController' 반환, 당신은'UINavigationController'에 할당하는거야? – Steven

+0

그건 그렇고, 나는 또한 [navController.navigationController popToRoot..'를 시도해 보았습니다. – Steven

+1

Objective-C는 오리 유형 언어입니다. 정적이 아닙니다. 런타임은 실제로 인덱스 0에 어떤 영향을 미치지 않습니다. 팝업에 응답하면 팝업됩니다. 그러나 거기에 탐색 컨트롤러가 있는지 잘 모르겠 으면 if ([navController respondsToSelector : @selector (popToRootViewControllerAnimated :)])를 사용하여 충돌로부터 안전하게 보호 할 수 있습니다. UINavigationController에 할당하고 있습니다. 컴파일러는 그것에 대해 불평하지 않을 것이다. 당신은 또한 id 할 수도 navController = [self.tabBarController.viewControllerers objectAtIndex : 0]; 네가 원한다면. – sc0rp10n

관련 문제