12

UISearchController を実装しましたが、うまく機能しています...

検索バーをクリックすると、期待どおりナビゲーション バーが消えます。電話を横向きに回転すると、このビューが得られますが、これは理にかなっています。

ここに画像の説明を入力

ただし、電話を回転して縦表示に戻すと(検索タイプ領域で選択されたまま)、次のビューが表示されます。

ここに画像の説明を入力

ナビゲーション バーが再表示されないことがわかります。基本的な検索コントローラーを実装しているように感じます。これを引き起こしている可能性があるのは何ですか?

self.venueSearchController = [[UISearchController alloc] initWithSearchResultsController:nil];
self.venueSearchController.searchResultsUpdater = self;
self.venueSearchController.searchBar.delegate = self;
self.venueSearchController.dimsBackgroundDuringPresentation = NO;
self.venueSearchController.hidesNavigationBarDuringPresentation = YES;
self.venueSearchController.searchBar.frame = CGRectMake(self.venueSearchController.searchBar.frame.origin.x, self.venueSearchController.searchBar.frame.origin.y, self.venueSearchController.searchBar.frame.size.width, 44.0);

self.definesPresentationContext = YES;

self.navigationController.navigationBar.translucent = YES;
self.venueSearchController.searchBar.translucent = YES;

self.tableView.tableHeaderView = self.venueSearchController.searchBar;
4

5 に答える 5

10

UIBarPositioningDelegateビューコントローラーに実装する必要がある場合があります。

self.venueSearchController.searchBar.delegate = self;

searchBar は、デリゲートからの応答を探しています。

@protocol UISearchBarDelegate <UIBarPositioningDelegate> 

あなたに以下を追加しますself(ViewControllerだと思います)

#pragma mark - <UIBarPositioningDelegate>

// Make sure NavigationBar is properly top-aligned to Status bar
- (UIBarPosition)positionForBar:(id<UIBarPositioning>)bar
{
    if (bar == self.venueSearchController.searchBar) {
        return UIBarPositionTopAttached;
    }
    else { // Handle other cases
        return UIBarPositionAny;
    }
}
于 2015-02-24T14:29:30.403 に答える
1

これは、UITableViewController レイアウトがナビゲーション バーを処理する方法に問題がある可能性があると考えています。

UITableViewController を UIViewController に置き換えて UITableView をドロップすることで、この問題を解決できると思います。次に、テーブル ビューの上部の制約を上部のレイアウト ガイドに設定します。サイド制約を左、右、下 0 に設定します。

これにより、テーブルが常にステータス バーの下に留まり、ナビゲーション バーが移動したり戻ったりしたときに正しく移動するようになります。

このディスカッションを参照してください: iOS 7: UITableView がステータスバーの下に表示される

于 2015-02-23T22:32:35.877 に答える
-6

設定で「ステータスバーを非表示」をオフにすることで、これを一時的に「修正」しました。

ここに画像の説明を入力

于 2015-02-24T14:21:09.580 に答える