一番好きな場所に移動したいと思います。フレームは設定できますが、どこに設定すればよいですか?
また、検索結果が空かどうかに関係なく、テーブルが引き続き表示されるようにするにはどうすればよいですか?
これは私が試したことです:
- (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;
}
結果:
- text の場合、searchResultsTableView はまだ空です
- キャラクターが1人の場合、枠はまだ移動していません
- キャラクターが 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秒未満で少しアニメーションに見えます
それ以外の場合、最終結果は私が望むとおりです。
誰かがこれを改善できるのだろうか。