在视图控制器之间进行推送过渡时保持视图

问题描述 投票:0回答:1

我有一个标签栏iOS应用。选项卡之一是地图(MyMapViewController)。 MyMapViewController顶部有一个自定义的“搜索”栏:

enter image description here

一旦用户点击“搜索”栏,他便进入搜索屏幕:

enter image description here

现在用户可以输入一些名称,并且对象列表将被过滤,并允许用户找到所需的对象。一切正常。

唯一的问题是,标签栏在搜索屏幕上可见。我需要在可见搜索屏幕时将其删除,并在用户返回到地图屏幕后立即将其返回。这是我想要实现的:

enter image description here

[目前,搜索屏幕是MyMapViewController的子视图控制器。称为MySearchViewController。使用“核心动画”执行“地图”模式和“搜索”模式之间的动画过渡。视图控制器上没有任何“按下” /“弹出”或“当前” /“关闭”操作。

我无法通过将其变为UITabBar或移动其框架来隐藏选项卡栏(isHidden = true),因为它留下了一个空白矩形。据我所知,只有两种方法可以隐藏标签栏:

  1. 将一个新的控制器(带有hidesBottomBarWhenPushed = true)推到导航堆栈中
  2. 提供模态控制器

所以看来我需要重做

[(父视图控制器)MyMapViewController,(子视图控制器)MySearchViewController

to

UINavigationStackMyMapViewController-(推送)-> MySearchViewController

但是。在这种情况下,我应该如何处理“搜索”栏?它是MyMapViewController的一部分,也是MySearchViewController的一部分。视图是否可能是两个UIViewControllers的一部分?另外,在从MyMapViewControllerMySearchViewController的转换过程中,我需要它来制作动画(如您所看到的,放大玻璃必须转换为向后箭头)。

ios uiviewcontroller uinavigationcontroller uitabbarcontroller uitabbar
1个回答
0
投票

如果您需要隐藏Tapbar,则可以通过self.tabBarController?.tabBar.isHidden = true完成。

如果要从SearchViewController中使用它(未显示或推送),则需要通过self.addChild(searchVC)在视图控制器的层次结构中添加SearchViewController并添加self.tabBarController?.tabBar.isHidden = true self.tabBarController?.tabBar.setNeedsLayout()

© www.soinside.com 2019 - 2024. All rights reserved.