【问题标题】:UIButton in tabbar disappears after presenting a modal view显示模态视图后,标签栏中的 UIButton 消失
【发布时间】: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


【解决方案1】:

更改约束确实有帮助。我的设置现在看起来像这样,它就像一个魅力。感谢卢卡斯的想法!但是我仍然不知道为什么需要进行更改。

private func setupTabBar() {
  
    middleButtonView.addSubview(middleButton)
    tabBar.addSubview(middleButtonView)
    
    middleButtonView.centerXAnchor.constraint(equalTo: tabBar.centerXAnchor, constant: 0).isActive = true
    middleButtonView.centerYAnchor.constraint(equalTo: tabBar.centerYAnchor, constant: -30).isActive = true
    middleButtonView.heightAnchor.constraint(equalToConstant: buttonViewRadius * 2).isActive = true
    middleButtonView.widthAnchor.constraint(equalToConstant: buttonViewRadius * 2).isActive = true
    
    middleButton.centerYAnchor.constraint(equalTo: middleButtonView.centerYAnchor, constant: 0).isActive = true
    middleButton.centerXAnchor.constraint(equalTo: middleButtonView.centerXAnchor, constant: 0).isActive = true
    middleButton.heightAnchor.constraint(equalToConstant: buttonRadius * 2).isActive = true
    middleButton.widthAnchor.constraint(equalToConstant: buttonRadius * 2).isActive = true
    
}

【讨论】:

    猜你喜欢
    • 2015-10-29
    • 2011-01-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-06-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多