まず、両方のビュー コントローラーを UITabBarController デリゲートに設定しました。どちらもタブ バー コントローラーの一部です。これを行うには、次のコードを各 viewDidLoad に入れます。
self.tabBarController.delegate = self;
次に、次のデリゲート メソッドを CalculatorsViewController に追加しました。
- (void)tabBarController:(UITabBarController *)tabBarController didSelectViewController:(UIViewController *)viewController {
[self presentCalculatorsView];
}
presentCalculators ビューは、同じビュー コントローラー内のサブビューを表示するだけです。
また、次のデリゲート メソッドを OptionsViewController に追加しました。
-(void)tabBarController:(UITabBarController *)tabBarController didSelectViewController:(UIViewController *)viewController {
[self presentHomeScreen];
}
このメソッドも、viewController 内の別のサブビューを表示するだけです。
私が抱えている問題は、OptionsViewController presentHomeScreen メソッドは、CalculatorsViewController にアクセスしない場合にのみ呼び出されることです。アプリで CalculatorsViewController にアクセスし、OptionsViewController に戻ると、
[self presentHomeScreen]
呼び出されることはありません。実際、まだ CalculatorsViewController からメソッドを呼び出しているようです。NSLog ステートメントでテストしました。
あるメソッドが他のメソッドをオーバーライドする理由はありますか? または、タブ バー ボタンが、アクティブなビュー コントローラー以外の別のビュー コントローラーからコードを実行するのはなぜですか?
編集* あるビューコントローラーが他のビューコントローラーからデリゲートを「盗む」のとほとんど同じです。