A と B の 2 つのタブを持つタブ バー コントローラーがあるとします。ここで、A はナビゲーション コントローラーです。
ユーザーが A にいる場合、ユーザーは A1 をプッシュしてから A2 をプッシュできます。これらは両方ともビュー コントローラーです。A2 の戻るボタンは、以下を実行します。
[self.navigationController popViewControllerAnimated:YES];
これにより、A2 で dealloc メソッドが正しくトリガーされます。
ユーザーが A2 にいて、タブ B に切り替えた場合、A2 で dealloc メソッドを呼び出す必要があります。したがって、TabBarController に次のメソッドを実装しました。
- (BOOL)tabBarController:(UITabBarController *)tabBarController shouldSelectViewController:(UIViewController *)viewController {
UINavigationController *nc = (UINavigationController*)tabBarController.selectedViewController;
[nc popToRootViewControllerAnimated:YES];
return YES;
}
しかし、このフローでは A2 の dealloc メソッドは呼び出されません! A2 から A1 へのポップが機能するのに、タブを変更しても View Controller の割り当てが解除されない可能性はありますか?
ヒントをありがとう!
ダン