首页 > 解决方案 > iOS 大标题导航隐藏搜索栏

问题描述

我有一个视图控制器,它有一个 3 页的轮播。在第一页上,我有一个集合视图并希望在导航栏中启用搜索栏,但在其他两个页面上我不想要它。因此,在页面选择回调中,当它是第二页和第三页时,我将 searchcontroller 设置为 null,并在第一页时将其设置回 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;
        }     
    }

谢谢 !

标签: iosxamarinxamarin.ios

解决方案


您可以尝试只隐藏如下SearchBarSearchController

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

推荐阅读