私の質問を読んでくれてありがとう。
ユーザーがインデックス4のタブをクリックしたときにポップアップメニューを実装しようとしています。したがって、インデックス4が押されたときにタブバーがviewcontrollerを切り替えないようにしています。
これが私のコードです:
- (BOOL) tabBarController:(UITabBarController *)tabBarController shouldSelectViewController:(UIViewController *)viewController
{
if(viewController == [tabBarController.viewControllers objectAtIndex:4]){
NSLog(@"NO");
return NO;
}else{
NSLog(@"YES");
return YES;
}
}
と を実装しましたがUITabBarControllerDelegate
、self.delegate = self;
機能するのはviewDidLoad
1 回だけです。
インデックス 4 のタブをクリックすると、メニューが表示され、タブバーは表示を切り替えません ( GREAT )。しかし、もう一度クリックすると、ログに "NO" が表示されても表示が変わります。ここで何が問題になる可能性がありますか?
ご提案ありがとうございます。
解決した
以下の Kasaname の回答のおかげで、selectedindex を追加して解決し、フラグ インデックス (prevtab) に設定しました。ユーザーがインデックス 4 を選択した場合を除き、prevtab を最後に選択したタブのインデックスに変更します。最終的なコードは次のとおりです。
- (BOOL) tabBarController:(UITabBarController *)tabBarController shouldSelectViewController:(UIViewController *)viewController
{
if(viewController == [tabBarController.viewControllers objectAtIndex:4]){
self.selectedIndex = prevTab; //only change in this method
return NO;
}else{
return YES;
}
}