2015-10-27 3 views
0

Я реализую метод UIPageViewControllerDelegate в моем суперклассе WDDesignPhotoBookViewController. (Он получен из другого суперкласса)Метод UIPageViewControllerDelegate не вызывается в суперклассе

Впоследствии я создаю подкласс класса WDPreviewBookViewController. Но когда я пытаюсь перетащить и перейти на следующую страницу, я столкнулся с крахом. Чтобы исправить это, мне пришлось реализовать метод UIPageViewControllerDelegate в моем подклассе и вызвать некоторый защищенный метод в суперклассе. На самом деле обе реализации в супер и подклассе одинаковы. Один из методов, который я реализовал, следующий:

- (void)pageViewController:(UIPageViewController *)pageViewController didFinishAnimating:(BOOL)finished previousViewControllers:(NSArray *)previousViewControllers transitionCompleted:(BOOL)completed { 

Я думаю, что решение не изящно. Вы также встретили такую ​​проблему? Любое предложение? Будет ли сообщение в этом случае полезным? Я могу подумать позже.

Я показываю стек вызовов, когда сбой: The beginning of the call stack

The End of the call stack

+0

Выясните, почему произошла авария? – kirander

+0

@kirander Я загружаю скриншоты стека вызовов при сбое. Я думаю, что это может объяснить катастрофу. –

+0

Похож на цикл, где метод tlsw_pageVIewController: didFinishAnimating: .. "вызывает себя. Вы должны найти это место. – kirander

ответ

0

Если вы реализуете делегаты метод в подклассе снова в этом случае, чтобы выполнить реализацию метода делегата супер класса, вы должны вызвать метод суперкласса вручную например,

- (void)pageViewController:(UIPageViewController *)pageViewController didFinishAnimating:(BOOL)finished previousViewControllers:(NSArray *)previousViewControllers transitionCompleted:(BOOL)completed{ 

[super pageViewController:pageViewController didFinishAnimating:finished previousViewControllers:previousViewControllers transitionCompleted:completed]; 

} 
+0

На самом деле система будет искать метод в суперклассах автоматически. Ваша реализация нужна только в том случае, если вам нужно выполнить дополнительную работу в подклассе. – kirander

+0

Да, вы правы, но если вы реализуете этот метод agin в подклассе, в этом случае он игнорирует реализацию в суперклассе. – KavyaKavita

+0

Да, это может быть решение, но проблемы не существует, я полагаю. – kirander

Смежные вопросы