2

一番好きな場所に移動したいと思います。フレームは設定できますが、どこに設定すればよいですか?

また、検索結果が空かどうかに関係なく、テーブルが引き続き表示されるようにするにはどうすればよいですか?

これは私が試したことです:

- (BOOL)searchDisplayController:(UISearchDisplayController *)controller shouldReloadTableForSearchString:(NSString *)searchString
{
    controller.searchResultsTableView.frame=self.placeForTableView.frame;
    controller.searchResultsTableView.hidden=false;
    controller.searchResultsTableView.alpha =1;
    [self debugMode:nil];
    return true;
}

結果:

  1. text の場合、searchResultsTableView はまだ空です
  2. キャラクターが1人の場合、枠はまだ移動していません
  3. キャラクターが 2 人以上いる場合は、思い通りに動作します。

次に、次のようなものを追加しました。

- (void)searchDisplayController:(UISearchDisplayController *)controller didShowSearchResultsTableView:(UITableView *)tableView
{
    [self putTableViewWhereItBelongs:tableView];
}
- (void)searchDisplayController:(UISearchDisplayController *)controller didHideSearchResultsTableView:(UITableView *)tableView
{
    [self putTableViewWhereItBelongs:tableView];
}
-(void)putTableViewWhereItBelongs :(UITableView *) tableView
{
    [self.view addSubview:tableView];
    tableView.frame=self.placeForTableView.frame;
    tableView.hidden=false;
    tableView.alpha =1;
}

これは、1 つの小さなキャッチで希望どおりに正確に機能します。最初のうちはうまくいきません。最初は、tableView は表示も非表示もされていません。

別の更新:

- (void)searchBarTextDidBeginEditing:(UISearchBar *)searchBar
{
    //UISearchDisplayController * controller = [self displayControllerForThisSearchBar:searchBar];
    if (IsEmpty(searchBar.text)) {
        searchBar.text=@" ";
        searchBar.text=@"";
    }

    //[self putTableViewWhereItBelongs:controller.searchResultsTableView];
}

問題:

  1. 気まずい
  2. 短い不具合。これはアニメ化しないでほしい。この問題があることをユーザーに知られたくありません。まあ、それは1秒未満で少しアニメーションに見えます

それ以外の場合、最終結果は私が望むとおりです。

誰かがこれを改善できるのだろうか。

4

0 に答える 0