0

나는 슬라이딩 메뉴를 만들기 위해 SWRevealViewController를 사용하고 있습니다. 메뉴에 액세스하기 전에 사용자 로그인을 허용하는 로그인보기가 표시됩니다. 이제 사용자가 로그인보기를 분리하고 다시 표시 할 수있게하려고합니다. 내 질문은 SWRevealViewController 팝업 방법입니다. 로그인 후 응용 프로그램에 대한 액세스를 제공Pop SWRevealViewController

코드는 다음과 같습니다이 솔루션은 작동하지 않습니다

MainViewController *vMainMenu = [[MainViewController alloc] initWithNibName:@"MainViewController" bundle:nil]; 
    vMainMenu.strURL = URL; 
    LeftMenu *vLeftMenu = [[LeftMenu alloc] initWithNibName:@"LeftMenu" bundle:nil]; 

    UINavigationController *principalNavController = [[UINavigationController alloc] initWithRootViewController:vMainMenu]; 
    UINavigationController *rearNavController = [[UINavigationController alloc] initWithRootViewController:vLeftMenu]; 

    SWRevealViewController *mainRevealController = [[SWRevealViewController alloc] initWithRearViewController:rearNavController frontViewController:principalNavController]; 

    mainRevealController.delegate = self; 

    self.viewController = mainRevealController; 

    principalNavController.navigationBar.hidden = YES; 
    rearNavController.navigationBar.hidden = YES; 

    self.window.rootViewController = self.viewController; 

:

[self.revealViewController.navigationController popViewControllerAnimated:YES]; 
Splash *vSplash = [[Splash alloc] initWithNibName:@"Splash" bundle:nil]; 
[self.navigationController pushViewController:vSplash animated:YES]; 

당신이

당신을 감사하십시오 저를 도울 수있다.

+0

문제가 해결 되었습니까? – ichanduu

+0

예. 하지만 실제로 최상의 솔루션은 아니며 panGestureRecognizer 및 tapGestureRecognizer를 비활성화 한 다음 splashScreen을 밀어 넣었습니다. [self.revealViewController.navigationController popViewControllerAnimated : YES]; [revealController panGestureRecognizer] .enabled = NO; [revealController tapGestureRecognizer] .enabled = NO; –

+0

나는 그것을 터뜨려 다 보았다. 그리고 그것이 보여주게되는 누구나는 빈 화면 다. 나는 ur 솔루션을 어떻게해서든지 시험 할 것이다. 고맙다. – ichanduu

답변

0

popView로 LoginViewController로 돌아갈 수 없습니다. 이 작업을 수행하려면 PresentViewController를 애니메이션없이 추가 할 수 있습니다.

Splash *vSplash = [[Splash alloc] initWithNibName:@"Splash" bundle:nil]; 
[self presentViewController: vSplash animated:NO completion:nil]; 
0

나는 동일한 문제가있었습니다. 몇 가지 스토리 보드를 구현했습니다.

 let storyboard = UIStoryboard(name: "Login", bundle: nil) 
     let startcontroller = storyboard.instantiateViewControllerWithIdentifier("LoginVC") as UIViewController 
     window?.rootViewController = startcontroller 

오른쪽 스 니펫을 사용하면 오른쪽 컨트롤러보기에 액세스 할 수 있습니다.

0

"풀기 꺼내기"를 사용할 수 있습니다. 푸는 segue는 앞으로 대신에가는 정상적인 segue 같이이다.

첫째, 로그인 뷰 컨트롤러로 이동하여 다음과 같은 방법을 추가

-(IBAction)unwindToLoginScreen:(UIStoryboardSegue *)segue { 
} 

이 방법은 비어있을 수 및 그것은 어떤 이름을 가질 수 있습니다; 당신의 코드에 많은 unwind segues가있을 수 있기 때문에 설명적인 이름을 사용하는 것이 좋습니다. 그리고 그것들을 구별하는 것이 유용 할 것입니다.

이 unwind 메소드는 스토리 보드의 모든보기 컨트롤러에서 볼 수있는 글로벌 상수 역할을합니다.

이제 로그인 화면으로 돌아갈 수있는 각보기 컨트롤러에서 느린 구불 구불 만들기를 만듭니다. 스토리 보드에서이 작업을 수행 할 수 있습니다.

  1. 원하는보기 컨트롤러를 선택하십시오. 상단 막대에는 View Controller를 나타내는 세 개의 버튼과 First Responder를 나타내는 버튼과 Exit를 나타내는 또 다른 버튼이 표시됩니다.
  2. 컨트롤러보기 단추에서 끝내기 단추로 Ctrl + 끌기. 상황에 맞는 메뉴가 나타나고 스토리 보드에 만든 모든 보이는 방법을 표시합니다.
  3. 문서 개요에서보기 컨트롤러에 대해 "언 와인드 세그 (sewue unwind)"가 표시됩니다. 해당 세그먼트에 식별자를 추가 할 수 있습니다 (예 : "로그인"). 그런 다음 performSegueWithIdentifier를 호출합니다. 로그인보기 컨트롤러에서 작성한 것을 선택하십시오.

이렇게하면보기 컨트롤러와 로그인보기 컨트롤러 간의 전체 스택이 해제됩니다. 즉, 로그인보기 컨트롤러 위에 스택 된 모든보기 컨트롤러가 나타납니다.

일반 지우기에 사용하는 것과 같은 방법으로 unwind segues에 prepareForSegue를 사용할 수도 있습니다. 그리고 segue의 결과로 무언가를하고 싶다면 - (IBAction) 메소드에 코드를 추가 할 수 있습니다.