ナビゲーションベースのビューコントローラがあり、ビューコントローラでは上のナビゲーションバーが表示されず、カスタムUIViewがナビゲーションバーとして使用されています。UIViewController&UIview deallocが呼び出されない
UIViewバーには戻るボタンがあり、バックボタンが事前設定されている場合、View Controllerと通信するためにDelegateメソッド(プロトコルを宣言しています)を使用します。
私はCustomNavigation Barで代理人を使用します。 id delegate;
とメインビューコントローラで私は私がViewControllersののdeallocでこのバーを解放デリゲートに
topBar = [[TopNavigationBar alloc] initWithFrame:CGRectMake(0, 0, 480, 40)];
topBar.lblTitle.text = @"Shop";
topBar.delegate = self;
を設定するナビゲーションバーを割り当てます。
私が戻るボタンを押すと、デリゲートメソッドを使用してメインViewControllerのpopViewControllerを呼び出します。
//in Custom Bar
-(void)ButtonPressed {
[delegate TopNavigationBarBackButtonPressed];
}
//In View COntroller
-(void)TopNavigationBarBackButtonPressed {
[self.navigationController popViewControllerAnimated:YES];
}
は今のViewControllerがポップされ、制御が以前のViewControllerに行くがにdeallocが、私は間違って何をやっているのViewControllerとUIViewの
両方で焼成されていませんか?
任意のアイデアの人でなければなりません? retainCountが0でなければ、deallocは呼び出されません。しかし、私はどこでもviewControllerを保持していません。私はスタック上でそれを押した後、[vewController release]を行います。だから私が考えることができる唯一の理由は、私が書いたカスタムプロトコルです。私はそれを解放する必要がありますか?私は財産の代議員を保持します。しかし、私がdeallocでそれをリリースしても、それは呼び出されていません。止まった! –