iOS大标题导航隐藏搜索栏

时间:2020-01-29 22:29:55

标签: ios xamarin xamarin.ios

我有一个视图控制器,其中有一个3页的轮播。在第一页上,我有一个收藏夹视图,并希望启用导航栏中的搜索栏,但在其他两个页面上,我不希望使用它。因此,在页面选择回调中,我在第二和第三页时将searchcontroller设置为null,在第一页时将其设置回searchcontroller对象。

它运作良好,但是我没有动画,并且View控制器没有调整大小,隐藏搜索栏时,我们可以在视图和导航栏之间看到空白。有没有办法正确地做到这一点?

我的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 :(得分:0)

您可以尝试仅为SearchBar隐藏SearchController,如下所示:

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