0

Я представляю контроллер вида регистрации по модулю из контроллера входа в систему. Мой контроллер начального представления - это контроллер входа в систему, и когда я представляю контроллер регистрации регистрации по модулю, нет ничего плохого, но что-то не так происходит, когда я использую ECSlidingViewController для сброса верхнего вида при выходе из системы. Я использую следующий код для сброса верхнего вида контроллера входа в систему при выходе из системы.Неверное представлениеViewController при выполнении модального segue (с помощью ECSlidingViewController)

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

    [self.slidingViewController resetTopView]; 

}]; 

Когда я представить вид Регистрацию модален после переустановки вида сверху с ECSlidingViewController, свойство presentingViewController контроллера вида Регистрации установлено на другой контроллер представления, не Вход контроллера.

Я знаю, что это действительно трудно понять суть вопроса, но если кому-то нужно больше деталей, с тем чтобы они могли ответить на этот вопрос, не стесняйтесь :)

+0

Как вы представляете регистрацию VC? – Wain

+0

modal segue от имени входа vc (с раскадрой) – CoderSpinoza

+0

Какой контроллер представления, который сообщает 'presentingViewController'? Это может быть ошибка с «ECSlidingViewController», поэтому пример проекта (желательно на GitHub), демонстрирующий проблему, очень помог бы. –

ответ

1

ECSlidingViewController, похоже, бардак с presentingViewController ,

ECSlidingViewController имеет свойство topViewController, и вы должны иметь доступ к контроллеру вида, который вы ожидаете от presentingViewController.

Я был в состоянии получить доступ к контроллеру вида можно было бы ожидать, чтобы быть 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]; 
    } 
} 

Вы не можете использовать навигационный контроллер в приложении, в этом случае было бы что-то вроде этого (не проверено):

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]; 
    } 
}