0

タブバーの項目をプログラムで切り替えようとしています。次のコードは問題なく動作しますが、特定の状況では動作しません。

self.tabBarController.selectedIndex = 0;

問題は次のとおりです。

2 つの UIViewController クラスを持つタブ バー コントローラーがあります。2 番目のタブでは、上記のコードを viewWillAppear メソッド内の if ステートメント内に配置しています。上記のコード自体は機能しますが、ビューが読み込まれていない場合にのみ機能します。したがって、最初のタブにはボタンがあります。そのボタンが押されると、プログラムによって 2 番目のタブに切り替わります。その時点で私のコードは機能し、基本的に最初のタブにとどまります。しかし、切り替えは最初の 1 回目以降は機能しません。そのボタンを押す前にその 2 番目のタブを選択しても機能しません。コードが含まれているという IF ステートメントが実行されますが、選択したタブは変更されません。

どんな助けでも大歓迎です。説明が必要な場合は、遠慮なくお尋ねください。

ありがとう!


さらに情報を追加させてください:

(1) これはまれにしか使用されません。最初の画面は検索画面です。検索を押すと、自動的に 2 番目のタブに移動します。結果がない場合を除き、アラートが表示され、そこにとどまります。

(2) 2 番目のタブには、絞り込み検索が実行されていない場合はすべてのアイテムのリスト、または絞り込まれたアイテムのリストが保持されます。いずれにせよ、そのリストは常に利用可能です。そのため、検索ページで止めたとしても、忘れて別のタブをクリックすると、アイテムがないことが通知されます。この時点で、便宜上、それらをタブ 1 に戻したいと思います。

それは大したことではなく、私はそれなしで生活できます。ユーザーの便利なアイテムを 1 つ追加したかっただけです。


ありがとうございます!UITabBarControllerDelegate で次のメソッドを使用しました。

- (BOOL)tabBarController:(UITabBarController *)tabBarController shouldSelectViewController:(UIViewController *)viewController{

if(self.tabBarController.selectedIndex == 0){
    if([books count] == 0){

        [self alertNoResults];

        return(FALSE);
    }
}
return(TRUE);
}

魔法のように働きました!

4

1 に答える 1

1

タブ切り替え中にタブを切り替えています。ハム博士。

UITabBarDelegate の- (BOOL)tabBarController:(UITabBarController *)tabBarController shouldSelectViewController:(UIViewController *)viewController;を実装してみてください。結果がない場合は NO を返します。

または、チェックインを実行します-viewDidAppear:(動作する可能性が高くなります)。それが機能しない場合は、 performSelectorInBackground を使用することもできます (ただし、ユーザーが他のタブをタップする可能性があることに注意してください!)

于 2010-08-06T18:59:14.900 に答える