0

로그인보기 컨트롤러에서 사인 업보기 컨트롤러를 모달로 표시합니다. 내 초기보기 컨트롤러는 로그인보기 컨트롤러이며 가입보기 컨트롤러를 모달로 표시 할 때 잘못된 것은 없지만 ECSlidingViewController를 사용하여 로그 아웃시 상위보기를 재설정하면 잘못된 것이 있습니다. 다음 코드를 사용하여 로그 아웃 할 때 상위보기를 로그인보기 컨트롤러로 재설정합니다.modal segue (ECSlidingViewController 사용) 할 때 presentingViewController가 잘못되었습니다.

UIViewController *newTopViewController = [self.storyboard instantiateViewControllerWithIdentifier:@"Login"]; 
[self.slidingViewController anchorTopViewOffScreenTo:ECRight animations:nil onComplete:^{ 
    self.slidingViewController.topViewController = newTopViewController; 

    [self.slidingViewController resetTopView]; 

}]; 

내가 ECSlidingViewController와 평면도를 설정하라는 후 가입 뷰 모달를 제시 할 때 가입 뷰 컨트롤러 presentingViewController 속성보기 컨트롤러 로그인 할 다른 뷰 컨트롤러로 설정된다.

나는 문제의 본질을 파악하기 위해 정말 열심히 것을 알고 있지만, 사람이 어떤 자세한 내용을 필요로하는 경우 그들은 presentingViewController 엉망으로 보인다

+0

어떻게 가입 VC를 선물 하시겠습니까? – Wain

+0

로그인 vc에서 모달 segue (스토리 보드 포함) – CoderSpinoza

+0

'presentingViewController'에 의해보고되는보기 컨트롤러는 무엇입니까? 이것은'ECSlidingViewController'의 버그 일 수 있으므로 문제를 보여주는 예제 프로젝트 (GitHub에서 선호)가 많은 도움이 될 것입니다. –

답변

1

ECSlidingViewController을 :) 자유롭게이 질문에 대답 할 수 있도록 .

ECSlidingViewController의 속성은 topViewController이며 여기에서 presentingViewController이 될 것으로 예상되는보기 컨트롤러에 액세스 할 수 있어야합니다.

ECSlidingViewController *ec = (ECSlidingViewController*)self.presentingViewController; 
if(ec) { 
    UINavigationController *navController = (UINavigationController*)ec.topViewController; 

    if(navController && navController.viewControllers.count) { 

     UIViewController *top = navController.viewControllers[0]; 

     // now you'll need to cast top to your presenting view controller's class, eg: 
     MyViewController *myVc = (MyViewController*)top; 
     [myVc doSomething]; 
    } 
} 
당신은 그것을 이런 식으로 뭔가 될 경우에 응용 프로그램의 탐색 컨트롤러를 사용하지 않을 수

(:

나는 다음과 같이 presentingViewController을 것으로 기대 뷰 컨트롤러에 액세스 할 수 있었다 테스트되지 않음) :

ECSlidingViewController *ec = (ECSlidingViewController*)self.presentingViewController; 
if(ec) { 
    UIViewController *top = (UIViewController*)ec.topViewController; 

    if(vc) {    
     // now you'll need to cast top to your presenting view controller's class, eg: 
     MyViewController *myVc = (MyViewController*)top; 
     [myVc doSomething]; 
    } 
}