Ios 标签条堆叠在彼此的顶部

Ios 标签条堆叠在彼此的顶部,ios,swift,xcode,Ios,Swift,Xcode,目前我有一个TabBarController,里面有一些选项卡。但是,如果我尝试打开另一个带有选项卡的TabBarController作为弹出窗口(下面的代码),那么这些选项卡只是堆叠。我已尝试使用TabBarcontroller?.tabbar.ishidden=false。但它只是隐藏了上一个选项卡栏,而没有删除间距。与此类似,新选项卡栏位于隐藏空间上方(约束仍然存在)。我只想让它弹出上一个控制器的顶部。另外,如果你想知道,我正在从第一个选项卡栏控制器之一打开VC。仅供参考,tabbar的背

目前我有一个TabBarController,里面有一些选项卡。但是,如果我尝试打开另一个带有选项卡的TabBarController作为弹出窗口(下面的代码),那么这些选项卡只是堆叠。我已尝试使用TabBarcontroller?.tabbar.ishidden=false。但它只是隐藏了上一个选项卡栏,而没有删除间距。与此类似,新选项卡栏位于隐藏空间上方(约束仍然存在)。我只想让它弹出上一个控制器的顶部。另外,如果你想知道,我正在从第一个选项卡栏控制器之一打开VC。仅供参考,tabbar的背景很清晰,所以看起来像这样

let vc = UIStoryboard(name: "Main", bundle: nil).instantiateViewController(withIdentifier: 
"MyTabBarController") as! MyTabBarController
self.addChild(vc)
vc.view.frame = self.view.frame
self.view.addSubview(vc.view)
vc.didMove(toParent: self)

您正在将您的
MyTabBarController
添加为子视图,即将此控制器嵌入现有的控制器(self)。
上一个TabBar(或其间距)仍然存在的原因是,
self
不是上一个TabBar控制器,而是其中一个嵌入的选项卡。这些选项卡控制器的框架不包括选项卡栏框架。
例如,如果TabBarVCs帧为(0、0、320、640),TabBars帧为(0、600、320、40),则tab控制器帧为(0、0、320、600)


要将您的
MyTabBarController
显示为弹出窗口,即覆盖当前vc而不修改其视图,只需按如下方式呈现新vc:

let vc = UIStoryboard(name: "Main", bundle: nil).instantiateViewController(withIdentifier: "MyTabBarController") as! MyTabBarController   
self.present(vc, animated: true, completion: nil)

您想用新的选项卡栏控制器替换原来的选项卡栏控制器,还是将其显示为弹出窗口?将其显示为弹出窗口,同时删除底部的选项卡栏如果用户在选项卡列表中(编辑:哦,不是swiftui),您可能需要添加更多选项卡。谢谢您,先生。享受赏金