我有一个视图控制器,其中有一个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;
}
}
谢谢!
答案 0 :(得分:0)
您可以尝试仅为SearchBar
隐藏SearchController
,如下所示:
void OnPageSelected()
{
if (page is IVehiclesSearchView)
{
NavigationItem.SearchController.SearchBar.Hidden = false;
}
else
{
NavigationItem.SearchController.SearchBar.Hidden = true;
}
}