4

これは本当に私にフィット感を引き起こしています。UISearchBar を UITableView の一番上の行に配置することに関する多くの情報が表示されますが、UISearchBar を画面の上部 (iPad) のツールバーに配置しています。iPadでの取り扱い方法UISearchBarUISearchDisplayController使用方法については何も見つかりません。の使用UIPopoverControllerに関する詳細情報をいただければ幸いです。私は機知に富んでいるので、これを手伝ってください。UISearchDisplayControllerUIPopoverController

IB を使用して、iPad の IUView にツールバーを配置しました。次を追加しました: Search Bar( not Search Bar and Search Display ) をツールバーに追加しました。オプションを次のように設定しました: [キャンセル ボタンを表示]、[スコープ バーを表示]、[スコープ ボタン] タイトルは、"Title1" と "Title2" (Title2 のラジオ ボタンを選択) です。Opaque、Clear Context、および Auto Resize がチェックされています。デリゲートをSearch Bar「ファイルの所有者」に接続し、それを IBOutlet にリンクしましたtheSearchBar

私のviewWillAppear中で私は次のものを持っています:

    //Just in case:
    [theSearchBar setScopeButtonTitles:[NSArray arrayWithObjects:@"Near Me",@"Everywhere",nil]];
    //Just in case (again):
    [theSearchBar setShowsScopeBar:YES];
    //doesn't seem to do anything:
    //[theSearchBar sizeToFit]; 

    searchDisplayController = [[UISearchDisplayController alloc] initWithSearchBar:theSearchBar contentsController:self];
    [self setSearchDisplayController:searchDisplayController];
    [searchDisplayController setDelegate:self];
    [searchDisplayController setSearchResultsDataSource:self];
    //again--does not seem to do anything..but people have suggested it:
    [theSearchBar sizeToFit]; 

さて、これまでのところ、とても良いと思いました。そこで、ファイルの所有者.mファイルを次のデリゲートにしましたUISearchBarDelegate, UISearchDisplayDelegate

私の問題: 検索を行うために必要なデリゲートをまだ実装していませんが、それでも...scopeBar検索フィールドをクリックしたときに、検索フィールドの隣に表示されるべきではありませんか? 入力した文字のログが表示されるので、デリゲート機能しています。

以下は、IB が本当にスコープ バー (UISegementedControl) を検索バーに配置したかどうかを確認するために使用したルーチンです。

for (UIView *v in theSearchBar.subviews) 
{
    if ([v isMemberOfClass:[UISegmentedControl class]]) 
    {             
        // You've got the segmented control!                 
        UISegmentedControl *scope = (UISegmentedControl *)v;
        // Do your thing here...
        NSLog(@"Found Scope: '%@'\n",scope);
        NSLog(@"Scope Segments: '%d'\n",[v numberOfSegments]);
    }
} 

これは次のことを示しています。

[30013:207] Found Scope: '<UISegmentedControl: 0x68a06b0; frame = (0 0; 200 44); opaque = NO; layer = <CALayer: 0x68a0600>>'
[30013:207] Scope Segments: '2'

だから、私は2つのセグメントがあることを知っています。また、彼らが現れていないことも知っています...何が間違っていますか?

スコープ バーが表示されないのはなぜですか? 検索で最初の文字を入力すると、結果 UIPopoverController が「結果」と「結果が見つかりません」というタイトルで表示されますが、スコープバーはありません。(「結果が見つかりません」以外のことを期待しているわけではありません。

スコープバーがどこに表示されるはずなのか疑問に思っています... UIPopoverのtitleViewで? 検索領域の右側にあるツールバーで? どこ?

4

2 に答える 2

0
[self.searchDisplayController searchBar] setScopeButtonTitles:[NSArray arrayWithObjects:@"Near Me",@"Everywhere",nil]];

これは役立つかもしれません。

于 2012-02-06T07:49:21.417 に答える