【发布时间】:2021-01-09 21:31:28
【问题描述】:
我有一个 CollectionView,从那里我有一个模态 segue(全屏)到 TabBarController。在 TabBarController 的 tabBar 中间是一个 UIButton,它将模态视图推到 TabBarController 上方(不是全屏)。 从 TabBarController 推送的模态视图被关闭后,UIButton 在 tabBar 中消失(如图所示)
在打开模态视图之前
解雇后
当第二个模态呈现的 ViewController 全屏显示时,这不会发生。以下设置工作正常:
CollectionView --modal fullscreen--> TabBarController --modal fullscreen--> anotherViewController
当我将第一个 VC 嵌入 NavigationController 并将 TabBarController 推送到导航堆栈中时,这也不会发生。这在这里也可以按预期工作:
NavigationView(CollectionView) --pushes--> TabBarController --modal--> anotherViewController
问题只是显示,当我以模态方式而不是全屏方式呈现 ViewController 时,在另一个以模态方式显示的 ViewController 上方。现在我想了解为什么会这样。
这就是我设置 TabBar 的方式:
override func viewWillLayoutSubviews() {
super.viewWillLayoutSubviews()
setupTabBarAppearance()
setupTabBarShadow()
setupTabBar()
}
private func setupTabBar() {
middleButtonView.center = CGPoint(x: tabBar.frame.width / 2, y: 10)
middleButton.center = CGPoint(x: middleButtonView.frame.width / 2, y: middleButtonView.frame.width / 2)
middleButtonView.addSubview(middleButton)
tabBar.addSubview(middleButtonView)
}
这就是我展示 ModalViewController 的方式:
@objc private func showController() {
let viewController = TableViewController()
viewController.modalPresentationStyle = .automatic
self.present(viewController, animated: true)
}
我在呈现的控制器中关闭呈现的 ViewController:
@objc func dismissController(){
self.dismiss(animated: true, completion: nil)
}
感谢您提供的任何帮助
【问题讨论】:
-
这不会有太大帮助,但不久前我遇到了同样的问题,我通过删除约束并重新添加它们来解决它。
-
我以编程方式进行了设置,所以这可能对我没有帮助。但是谢谢你的想法
-
您仍然可以通过编程方式添加约束。
-
我很高兴你坚持。在以不同的方式(centerY、X、高度和宽度)添加约束后,它确实起作用了。我仍然不知道为什么会出现这些问题,但是:解决了。干杯伙伴!
-
我也不知道为什么会这样,但我确实知道如何解决它。
标签: ios swift uitabbarcontroller modalviewcontroller