0

同一の s + sをUITabBarController含む 4 つのタブがあります。それぞれにandがあり、すべてのデリゲート メソッドを実装します。まず、任意のタブをクリックし、検索バーをタップしてテキストを入力し、検索を押します。View Controllerが最前面のテーブルビューをどのように認識しているかを確認するために、ログを内部に配置しました(今のところ、結果はゼロです)。UINavigationControllerUITableViewControllerUISearchBarUISearchDisplayControllernumberOfSectionsInTableView

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
{
    if (tableView == self.searchDisplayController.searchResultsTableView) {
        NSLog(@"Search Controller is the current table view");
        return 0;
    } else
        NSLog(@"Search Controller is not the current table view");

    return self.itemSections.count;
}

今回は、最初のステートメントがコンソールに出力されます。

次に、(検索コントローラーを閉じずに) タブを変更し、すぐに最初のタブ (検索コントローラーを使用) に戻ります。検索コントローラーは依然として最前面のビューですが、2 番目のログ ステートメントは他のステートメントではなく出力されます。

私が変更した場合:

if (tableView == self.searchDisplayController.searchResultsTableView)

に:

if (tableView == self.searchDisplayController.searchResultsTableView || self.searchDisplayController.isActive)

次に、新しい if ステートメントの 2 番目の基準により、コントローラーは本来あるべき動作をすることができます。私の質問はtableView、メソッドがアクティブなときとnumberOfSectionsInTableView等しくないのはなぜですか?self.searchDisplayController.searchResultsTableViewself.searchDisplayController

4

0 に答える 0