Mam kontroler widoku oparty na Nawigacja iw kontroler widoku ukryłem górny pasek nawigacji i używać niestandardowy UIView jako pasek nawigacji.UIViewController & UIview dealloc nie jest wywoływana
Pasek UIView ma przycisk Wstecz i używam metod Delegata (zadeklarowałem protokół) do komunikacji z kontrolerem widoku po naciśnięciu przycisku Wstecz.
Używam delegata w moim CustomNavigation Bar id delegata;
i w widoku głównym kontrolerem kiedy przeznaczyć pasek nawigacyjny ustawić delegata
topBar = [[TopNavigationBar alloc] initWithFrame:CGRectMake(0, 0, 480, 40)];
topBar.lblTitle.text = @"Shop";
topBar.delegate = self;
zwalniam to bar w dealloc ViewControllers.
Teraz po naciśnięciu przycisku wstecz używam metody delegate, aby wywołać popViewController w głównym ViewController.
//in Custom Bar
-(void)ButtonPressed {
[delegate TopNavigationBarBackButtonPressed];
}
//In View COntroller
-(void)TopNavigationBarBackButtonPressed {
[self.navigationController popViewControllerAnimated:YES];
}
Teraz ViewController jest poped i sterowanie przechodzi do poprzedniego viewController ale dealloc nie jest zwolniony zarówno w ViewController i UIView
Co robię źle?
żadnych ludzi pomysł ?? Dealloc nie zostanie wywołany, jeśli wartość retainCount nie wynosi 0. Ale nie zachowuję nigdzie elementu viewController. Robię [wydanie VwController] po tym, jak pchnę je na stos. Więc jedyny powód, dla którego mogę myśleć, to niestandardowy protokół, który napisałem. Czy muszę to wydać? Zachowuję delegata w nieruchomości. Ale nawet jeśli zwolnię to w dealloc, nie zostanie on wywołany. STUMPED !!! –