문제

내 앱에 3 개의 탭 바가 있습니다. 내 AppDelegate에는 사용자가 로그인되지 않은 경우 로그인 뷰를 팝업하는 LoginView에 대한 참조가 있습니다.

 - (void)LoginView
{
loginView = [[[LoginViewController alloc] initWithNibName:@"LoginView" bundle:nil] autorelease]; 
UINavigationController* nav = (UINavigationController*)[tabBarController.viewControllers objectAtIndex:0]; 
loginView.navC = nav; [nav presentModalViewController:loginView animated:YES];
}

세 번째 Tabbar는 설정보기이며 가입 버튼이 있습니다. 처음에는 올바른 사용자 이름을 볼 수 있지만 서명을 클릭하자마자 App Delegate를 사용하여 위에 표시된 동일한 방법을 호출합니다. logview가 올바르게 팝업되고 다른 사용자로 서명하면 이전 사용자 이름이 여전히 표시되므로 (3 번째 Tabbar보기가 이미로드 되었기 때문에) 내 질문은 내 질문입니다.
1) LoginView를 넣을 수있는 가장 좋은 곳은 어디입니까?
2) 가입 후 앱을 재설정하는 방법
내 질문이 분명하기를 바랍니다. 또는 더 많은 세부 사항을 기꺼이 줄 것입니다.
감사해요.
업데이트:기본적으로 나는 사인 아웃에 대한 모든보기를 내리고 처음부터 시작하고 싶습니다.

도움이 되었습니까?

해결책 2

나를 위해 일한 것, 그리고 이것이 올바른 방법이기를 바랍니다.

NSArray *vc= tabBarController.viewControllers;
for (int i = 0; i < [vc count]; i++) {
    UINavigationController *nc = [vc objectAtIndex:i];
    if (nc == tabBarController.selectedViewController) {
        continue;
    }
    [nc popToRootViewControllerAnimated:NO];
}

나는 이것이 메모리에서 모든 시야를 언로드하고 Tabbar가 전환 될 때 다시로드하도록 강요하기를 바랍니다. 이것이 좋은 방법이 아닌지 알게됩니다.

다른 팁

더 나은 방법은 설정 컨트롤러에서 공개 changeLoginName : 메소드를 작성하고 사용자가 로그인 할 때 로그인보기에서 해당 메소드를 호출하는 것입니다. 포인터를 보관하지 않으면 탭 막대를 통해 해당보기에 액세스 할 수 있습니다. 다른 곳.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top