ECSliding, измените underLeftViewController

Я использую ECSliding и у меня есть эта проблема!

В моем проекте есть следующие файлы:

InitViewController (ECSlidingController)

FirstViewController (UIViewController)

SecondViewController (UIViewController)

LeftMenuViewController (UIViewController)

LeftMenuTwoViewController (UIViewController)

Я использую InitView, чтобы установить свой FirstView как вид сверху.

Сдвиг вправо показывает LeftMenuViewController, который имеет кнопку, при нажатии измените вид сверху на SecondViewController. Я хотел бы знать, возможно ли использовать LeftMenuTwoViewController в качестве underLeftViewController для SecondView. Также я хочу кнопку в LeftMenuTwo, которая меняет topView на FirstView.

Я хочу FirstView с underLeftViewController в качестве LeftMenuViewController, и SecondView с underLeftViewController в качестве LeftMenuTwoViewController. В каждом меню есть кнопка, которая изменяет topView на другое с другим underLeftViewController.

Я сделал это:

SecondViewController *second =  [self.storyboard
                                  instantiateViewControllerWithIdentifier:@"SecondTop"];

[self.slidingViewController anchorTopViewOffScreenTo:ECRight
                                          animations:nil
                                          onComplete:^{
    self.slidingViewController.topViewController = second;

    [self.slidingViewController resetTopViewWithAnimations:nil
                                                onComplete:^{
        LeftMenuTwoViewController *newUnderLeftVC = [self.storyboard
                                  instantiateViewControllerWithIdentifier:@"LeftTwo"];

        self.slidingViewController.underLeftViewController = newUnderLeftVC;
    }];
}];

Но когда я нажимаю кнопку, topView запускает подпрыгивающую анимацию, сдвигаясь вправо, но никогда не возвращается снова и сразу после того, как TopView отключается, экран underLeftViewController становится пустым. Кто-нибудь знает почему?

Скачать: Мой Проект

1 ответ

Решение

Измените метод на этот:

-(IBAction)openSecond:(id)sender
{
    SecondViewController *second = [self.storyboard instantiateViewControllerWithIdentifier:@"Second"];
    ECSlidingViewController *slideController = self.slidingViewController;

    [slideController anchorTopViewOffScreenTo:ECRight animations:nil onComplete:^{
        slideController.topViewController = second;
        [slideController resetTopViewWithAnimations:nil onComplete:^{

            LeftMenuTwoViewController *newUnderLeftVC = [self.storyboard instantiateViewControllerWithIdentifier:@"LeftTwo"];
            slideController.underLeftViewController = newUnderLeftVC;
        }];
    }];
}

Проблема была в том, что когда представление удаляет себя как контроллер вида сверху, вызывая self.slidingViewController больше не возвращает действительный экземпляр (он возвращает ноль).

Другие вопросы по тегам