iOS Большой заголовок навигации скрыть панель поиска - PullRequest
0 голосов
/ 30 января 2020

У меня есть контроллер представления, у которого есть карусель с 3 страницами. На первой странице у меня есть представление коллекции и я хочу включить панель поиска в панели навигации, но на двух других страницах я не хочу этого. Так что на обратном вызове выбора страницы я установил нулевой searchcontroller, когда это вторая и третья страница, и установил его обратно в объект searchcontroller, когда это первая страница.

Это работает хорошо, но у меня нет анимации, и контроллер просмотра не изменить размер, и мы можем увидеть пустое пространство между видом и панелью навигации, когда панель поиска скрыта. Есть ли способ добиться этого должным образом?

Мой код ViewDidLoad:

 public override void ViewDidLoad()
    {
        base.ViewDidLoad();

        searchController = new UISearchController(searchResultsController: null)
        {
            HidesNavigationBarDuringPresentation = true,
            DimsBackgroundDuringPresentation = false,
            //ObscuresBackgroundDuringPresentation = true
        };
        searchController.SearchBar.SearchBarStyle = UISearchBarStyle.Minimal;
        DefinesPresentationContext = true;
        NavigationItem.SearchController = searchController;
    }

После обратного вызова выбора страницы:

void OnPageSelected()
    {
        if (page is IVehiclesSearchView)
        {
            NavigationItem.SearchController = searchController;           
        }
        else
        {
            NavigationItem.SearchController = null;
        }     
    }

Спасибо!

1 Ответ

0 голосов
/ 30 января 2020

Вы можете попробовать только с сокрытием SearchBar для SearchController следующим образом:

void OnPageSelected()
{
    if (page is IVehiclesSearchView)
    {
        NavigationItem.SearchController.SearchBar.Hidden = false;           
    }
    else
    {
        NavigationItem.SearchController.SearchBar.Hidden = true;
    }     
}
...