SWRevealViewController — узнать, какой ViewController отображается

Я использую подключаемый модуль SWRevealViewController (https://github.com/John-Lluch/SWRevealViewController) чтобы в моем приложении для iOS были переходы, похожие на ящики.

Я добавил panGestureRecognizer в свое представление, чтобы пользователь мог перетаскивать правый ViewController, чтобы скрыть левый VC:

[self.view addGestureRecognizer: self.revealViewController.panGestureRecognizer];

Теперь я хотел бы определить, когда правильный VC был перетащен для запуска анимации, поэтому в основном я просто хочу найти способ автоматически узнать, какой VC отображается.

До сих пор я пытался связать событие с self.revealViewController.panGestureRecognizer с помощью этого кода:

 [self.revealViewController.panGestureRecognizer addTarget:self action:@selector(PanGestureEnded:)];

А затем сделайте это:

-(void)PanGestureEnded:(UIPanGestureRecognizer *)gesture{
    if (gesture.state==UIGestureRecognizerStateEnded) {
        //some code here
    }
}

Но мое приложение всегда падает, и я получаю ошибку exc_bad_access. Поэтому я включил NSZombies и получаю следующее сообщение об ошибке:

 -[TabBarViewController PanGestureEnded:]: message sent to deallocated instance 0xc1ad890

Кто-нибудь знает, как это исправить?

Большое спасибо


person Spearfisher    schedule 07.10.2013    source источник
comment
кто-нибудь, чтобы помочь мне в этом, пожалуйста?   -  person Spearfisher    schedule 10.10.2013


Ответы (2)


Я только что столкнулся с той же ошибкой сегодня при попытке привязать действие к self.revealViewController.panGestureRecognizer.

Я не могу исправить ошибку. Вместо этого я устанавливаю текущий контроллер в качестве делегата раскрытьViewController и вызываю метод делегата:

- (void)revealControllerPanGestureBegan:(SWRevealViewController *)revealController

и выполнить мое действие в вышеуказанном методе.

Надеюсь, это поможет.

person decembereleven    schedule 01.11.2013

Недавно я столкнулся с той же проблемой.

Я смог решить эту проблему, обновив проект SWRevealViewController до его последней версии, и вместо использования переходного соединения в качестве «контроллера отображения отображения» (который сейчас устарел) я использую «контроллер нажатия контроллера отображения отображения».

person cmota    schedule 16.08.2014