앱 외부에서 실행될 수있는 재설정 알림이 있으며 데이터가 유효하지 않기 때문에 사용자가 수행 한 모든 작업이 종료되고 기본 화면으로 돌아갑니다. 현재 모든보기 컨트롤러에 unwind segues를 넣어야하지만이 알림이 발생할 때마다 프로그래밍 방식으로 전역 performSegueWithIdentifier를 호출하려고합니다. 상당수의 뷰 컨트롤러가 있으며 모든 곳에서이 코드를 복제해야하는 것은 좋지 않습니다. 새로운 뷰 컨트롤러가 프로젝트에 추가 될 때 유지 관리 문제가 될 것입니다. 이 작업을 수행하는 간단한 방법이 있습니까?글로벌 언 와인드 세그
답변
특정 뷰 컨트롤러로 바로 이동할 수 있습니다. 하나의 스토리 보드가있는 경우보기 컨트롤러에서이를 호출하십시오.
self.view.window.rootViewController = [self.storyboard instantiateInitialViewController];
또는 응용 프로그램의 여러 스토리 보드가있는 경우 스토리 보드 ID
self.view.window.rootViewController = [self.storyboard instantiateViewControllerWithIdentifier:@"StoryboardID"];
에 의해 초기되지 뷰 컨트롤러로 이동, 당신은 먼저 특정 스토리 보드를 받아야합니다.
UIStoryboard* storyboard = [UIStoryboard storyboardWithName:@"Main" bundle:[NSBundle mainBundle]];
self.view.window.rootViewController = [storyboard instantiateInitialViewController];
네비게이션 컨트롤러가있는 경우 루트보기 컨트롤러로 전환하면됩니다.
[self.navigationController popToRootViewControllerAnimated:YES]
감사합니다. 특정보기 컨트롤러를 인스턴스화하면 컨트롤러 스택에 남아 있지 않습니까? 나는 주 컨트롤러로 돌아 가기 전에 모든 것을 터뜨리고 싶다. 아니면 윈도우의 rootviewcontroller가 다른 모든 컨트롤러를 릴리즈 할 것인가? – possen
빠른 응답은 예입니다. 내부의주기를 유지하지 않으면 모든 현재 컨트롤러 계층 구조가 정리됩니다. 또한 이러한 뷰 컨트롤러는 새로운 상태로 인스턴스화된다는 점을 명심해야합니다. –
어떻게 응용 프로그램을 탐색하고 있습니까? 내비게이션 컨트롤러를 통해? 그렇다면 popToRootViewController를 할 수 없습니까? – LyricalPanda
흥미 롭군요, 네,베이스의 네비게이션 컨트롤러이고 다른 것들은 탭뷰와 페이지 뷰입니다. – possen
'self.navigationController.popToRootViewController'와 같은 소리는이 경우에 문제를 해결할 수 있습니다. 시도해보고 작동하는지 알려주세요 :) – LyricalPanda