【问题标题】:Custom Tab Bar with details view带有详细信息视图的自定义标签栏
【发布时间】:2016-11-08 10:23:55
【问题描述】:

我正在根据本教程创建自定义标签栏:https://github.com/codepath/ios_guides/wiki/Creating-a-Custom-Tab-Bar

一切都很好,但是当我想从某个视图控制器切换到它的“详细信息视图”时,详细信息视图会用菜单覆盖底部栏。这种行为是合乎逻辑的,因为我正在推动一个新的视图控制器,但我必须如何做才能使底栏始终可见和正常工作?

我为此使用 segue,因为我需要传递一些数据。我需要自定义栏,因为使用 Apple 的功能和外观很难实现。

有什么提示或建议吗? 谢谢

编辑: 这里所有的“选项卡”都运行良好,但是当您点击一行时,我导航到“详细信息”视图

在详细信息视图中,底部栏不可见。

【问题讨论】:

  • 第9步提到的contentView你设置了吗
  • 是的,我已经完成了所有教程的步骤。问题在于详细信息视图,本教程中没有介绍:(
  • 你能发一些你的问题的截图吗?
  • 我编辑了我的帖子以包含图片
  • 设置您的 customBar.layer.zPostion = 1 或尝试您的 customView bringSubview(toFront:)

标签: ios swift uiviewcontroller ios8 tabbarcontroller


【解决方案1】:

您是否尝试将hidesBottomBarWhenPushed = false 设置为详细信息视图?

【讨论】:

  • 我没有使用 UITabBarController。它全部基于 UIViewControllers,而我的底栏只是一个 UIView。没有 hidesBottomBarWhenPushed 属性
  • Container View 只不过是一个 UIView,我用它来显示每个选项卡的 UIViewControllers。问题可能是如何从容器视图中的视图控制器导航到另一个具有 segue 的视图控制器,以便两者具有相同的大小?
【解决方案2】:

解决了。而不是打电话
self.performSegueWithIdentifier("detailsViewSegue", sender: self)

tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) 我将 DetailsView 视图添加到层​​次结构中,如下所示:

let storyboard = UIStoryboard(name: "Main", bundle: nil)
let detailsView = storyboard.instantiateViewControllerWithIdentifier("contactDetailsView")
addChildViewController(detailsView)
detailsView.view.frame = CGRectMake(self.view.frame.width, 0, self.view.frame.width, self.view.superview!.frame.height)
self.view.addSubview(detailsView.view)
UIView.animateWithDuration(0.25) {
       detailsView.view.frame = CGRectMake(0, 0, self.view.frame.width, self.view.superview!.frame.height)
}
detailsView.didMoveToParentViewController(self)

然后当用户点击后退箭头时:

 @IBAction func goBackButtonAction(sender: UIButton) {
        self.willMoveToParentViewController(self)
        UIView.animateWithDuration(0.25, animations: { 
            self.view.frame = CGRectMake(self.view.frame.width, 0, self.view.frame.width, self.view.frame.height)
            }) { (completed) in
                if completed {
                    self.view.removeFromSuperview()
                    self.removeFromParentViewController()
            }
        }
    }

【讨论】:

    猜你喜欢
    • 2023-04-09
    • 2012-06-30
    • 1970-01-01
    • 1970-01-01
    • 2011-07-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多