我有一个标签栏iOS应用。选项卡之一是地图(MyMapViewController
)。 MyMapViewController
顶部有一个自定义的“搜索”栏:
一旦用户点击“搜索”栏,他便进入搜索屏幕:
现在用户可以输入一些名称,并且对象列表将被过滤,并允许用户找到所需的对象。一切正常。
唯一的问题是,标签栏在搜索屏幕上可见。我需要在可见搜索屏幕时将其删除,并在用户返回到地图屏幕后立即将其返回。这是我想要实现的:
[目前,搜索屏幕是MyMapViewController
的子视图控制器。称为MySearchViewController
。使用“核心动画”执行“地图”模式和“搜索”模式之间的动画过渡。视图控制器上没有任何“按下” /“弹出”或“当前” /“关闭”操作。
我无法通过将其变为UITabBar
或移动其框架来隐藏选项卡栏(isHidden = true
),因为它留下了一个空白矩形。据我所知,只有两种方法可以隐藏标签栏:
hidesBottomBarWhenPushed = true
)推到导航堆栈中所以看来我需要重做
[(父视图控制器)MyMapViewController
,(子视图控制器)MySearchViewController
to
UINavigationStack
:MyMapViewController
-(推送)-> MySearchViewController
但是。在这种情况下,我应该如何处理“搜索”栏?它是MyMapViewController
的一部分,也是MySearchViewController
的一部分。视图是否可能是两个UIViewControllers
的一部分?另外,在从MyMapViewController
到MySearchViewController
的转换过程中,我需要它来制作动画(如您所看到的,放大玻璃必须转换为向后箭头)。
如果您需要隐藏Tapbar,则可以通过self.tabBarController?.tabBar.isHidden = true
完成。
如果要从SearchViewController中使用它(未显示或推送),则需要通过self.addChild(searchVC)
在视图控制器的层次结构中添加SearchViewController并添加self.tabBarController?.tabBar.isHidden = true
self.tabBarController?.tabBar.setNeedsLayout()