2011-11-01 5 views
0

내가 같은 스토리 보드의 설정을 가지고 :로그 아웃 중에 스토리 보드에서 '스택'을 풀어야합니까?

TitleScreen
(푸시)
LoginScreen
(CustomSegue)
UITabBarViewController (여기에 루트도이다 UINavigationController가)
(모달)
SettingsView
(CustomSegue)
TitleScreen

그래서 내 목표는 SettingsView에있는 "Logout"버튼을 클릭하면 사용자가 TitleScreen으로 돌아갑니다.

그러나 로그 아웃 후이 시도했을 때 TitleScreen은 더 이상 LoginScreen으로 전환되지 않습니다. 그것은 응용 프로그램을 시작할 때 작동하지만 '로그 아웃'후에는 작동하지 않습니다.

내 말은, 어떻게 든 스토리 보드 '스택'을 풀어야 만합니까? 그렇다면 1 전환으로 어떻게 할 수 있습니까?

아이디어 : AppDelegate으로 NSNotificationCenter을 통해 알림을 보내고 rootViewControler을 다시 만드십시오.

누구나 전에이 작업을 수행 했습니까?

+0

앱 대리인에게 알림을 보내면 작동하지 않습니다. 앱 대리인은 먼저 rootViewController를 닫아야합니다. 완료되면 스토리 보드의 초기보기 컨트롤러로 다시 초기화하십시오. 감사합니다. – Paul

답변

0

나라면 디자인 시작시 탐색 컨트롤러를 넣고 popToRootViewController : animated : 루트로 돌아가십시오. 로그인 페이지와 같은 이전보기에 대한 탐색 표시 줄을 표시하지 않으려면 항상 숨기기를 선택할 수 있습니다.

내가 내 tutorial here에서 유사한 작업을 수행합니다.이 튜토리얼에서는 아무 것도 숨기지 않는 것을 제외하고 디자인 상단에있는 두 탭에 대한 nav 컨트롤러가 있습니다.

+0

나는 이것에 대해 생각했지만,'UINavigationController'는 절대로'UITabBarController'를 포함해서는 안된다는 것을 빨리 깨닫습니다. 'UITabBarController'의 자식 중 하나가'UINavigationController' 일 수 있기 때문입니다. – Paul

+0

아니요,이 계층 구조의 맨 위에는 탭 막대와 탐색 컨트롤러도 있습니다. 나는 나의 튜토리얼에서 비슷한 것을한다. 그에 따라 대답을 편집했습니다. – Simon

0

여기 스토리 보드 레이아웃을 약간 다시 생각해 보겠습니다. 제목 화면과 로그인 화면은 기본적으로 앱의 주요 부분 상단에있는 모달보기 인 UITabBarController입니다. 스토리 보드의 초기보기 컨트롤러가 UITabBarController이되고 응용 프로그램 실행이 끝나면 조건부로 제목보기/로그인 화면이 모달로 표시됩니다.

이제이 디자인으로 로그인 화면을 보여주는 것은 모달 세구를 수행하는 것처럼 간단합니다. 설정보기 컨트롤러에서 위임을 사용하여 사용자가 로그 아웃했으며 로그인보기 컨트롤러를 표시해야한다는 사실을 프리젠 테이션보기 컨트롤러에 알리는 방법을 생각해 볼 수 있습니다.

+0

이 작업을 시도했지만 'UITabBarController' 뷰의 구현은'before sign in '상태에 대해 알아야하므로 깨끗하지 않습니다. – Paul

+0

설정에서 모달 부모에게 위임에 관해서는 NSNotificationCenter를 사용하는 것을 선호합니다. 그것은 본질적으로 EventBus 패턴이고 훨씬 더 깨끗하며 내 취향에 더 적합합니다. – Paul

관련 문제