ios - 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;
}
}
谢谢 !
解决方案
您可以尝试只隐藏如下SearchBar
:SearchController
void OnPageSelected()
{
if (page is IVehiclesSearchView)
{
NavigationItem.SearchController.SearchBar.Hidden = false;
}
else
{
NavigationItem.SearchController.SearchBar.Hidden = true;
}
}
推荐阅读
- java - Android studio 无此列 SQL 数据库
- http - 在 Go 中使用 http.NewRequest 处理错误
- elasticsearch - Logstash 未在弹性搜索中创建索引
- c++ - 两个未排序数组之间的最小差异
- node.js - Express js app.use() 无法正常工作?
- vba - 如何在 VBA 中显示带有 unicode 字符的消息框?
- android-intent - requestCode 只能使用低 16 位
- kdb - 取消组合字典
- ruby-on-rails - 将一张表中的数据包含到 Rails 中的附件中
- javascript - 在 onClick 事件之后,React 中的条件渲染不起作用