Dziwne zachowanie PopViewController

Ze względu na dziwne żądanie, które próbowałem wyłączyć, ale nie zadziałało, musiałem zastąpić przycisk Wstecz nawigacji.

Zrobiłem niestandardową podklasę UINavigationController i zaatakowałem- (BOOL)navigationBar:(UINavigationBar *)navigationBar shouldPopItem:(UINavigationItem *)item metoda.

Oto mój kod:

@interface CustomUINavigationController ()

@end

@implementation CustomUINavigationController


#pragma mark - UINavigationBar delegate methods

- (BOOL)navigationBar:(UINavigationBar *)navigationBar shouldPopItem:(UINavigationItem *)item {

    if ([[self.viewControllers lastObject] isKindOfClass:[ViewController1 class]]) {
        ViewController1 *vc1 = (ViewController1 *)[self.viewControllers lastObject];
        [vc1 handleBackAction];
        if (vc1.canPopVC == YES) { 
            [self popViewControllerAnimated:YES];
            return YES;
        } else {
            return NO;
        }
    }

    [self popViewControllerAnimated:YES];
    return YES;
}

@end

Wszystko działa dobrze, chyba że programowo poproszę viewController. Aplikacja rozbił się za każdym razem, gdy chciałem wykonać push po wspomnianym popie. ObrócenieNSZombie on, ujawnił, że po programowym wywołaniu viewController, jego macierzysty kontroler widoku jest zwolniony. W tym momencie utworzenie niestandardowego przycisku BackButton nie jest opcją, ponieważ spowoduje utratę natywnej funkcji przesuwania do systemu iOS 7 na popViewController.

Dziennik awarii:

*** -[ContactsDetailViewController performSelector:withObject:withObject:]: message sent to deallocated instance 0x1806b790

questionAnswers(4)

yourAnswerToTheQuestion