gpt4 book ai didi

ios - Swift 多个 subview 并返回原始 TableView

转载 作者:搜寻专家 更新时间:2023-11-01 06:55:57 24 4
gpt4 key购买 nike

我创建了自己的 TabView 第一个选项卡始终是包含 TableView 的 Home 选项卡。其他 3 个选项卡搜索、菜单和收件箱是 subview 。我可以从

  • 搜索首页然后返回首页,一切正常
  • Home to Menu 然后 Back to Home 也可以用
  • Home to Menu 然后到 Search 和 back to Home 将我带回 Menu subview 。我基本上想在单击 Home Tab 时消除所有 subview 。此外,每个 TabView 都在它自己的 Controller 中。

这是我的代码

从家庭 Controller 到菜单 Controller

@IBAction func MenuTabAction(_ sender: UIButton) {
let Popup = UIStoryboard(name: "Main", bundle: nil).instantiateViewController(withIdentifier: "MenuC") as! MenuC

self.addChildViewController(Popup)
Popup.view.frame = self.view.frame
Popup.view.tag = 100
self.view.addSubview(Popup.view)
Popup.didMove(toParentViewController: self)

}

从菜单 Controller 到家庭 Controller 和搜索 Controller

   @IBAction func HomeTabAction(_ sender: UIButton) {
if let viewWithTag = self.view.viewWithTag(100) {
print("Tag 100")
viewWithTag.removeFromSuperview()
}

}

@IBAction func SearchTabAction(_ sender: UIButton) {

let Popup = UIStoryboard(name: "Main", bundle: nil).instantiateViewController(withIdentifier: "LocalSearchC") as! LocalSearchC
Popup.view.frame = self.view.frame
Popup.view.tag = 100
self.view.addSubview(Popup.view)
Popup.didMove(toParentViewController: self)
}

我猜测删除 super View 一次只会删除 1 个 super View ,所以如果我从 Subview1 转到 subview2 然后单击 HomeTab,它会将我带到 subview1 而不是原始 HomeTab 。单击“主页”选项卡时是否可以删除所有父 View / subview ?

enter image description here

最佳答案

每个选项卡都有自己的 View Controller 。理想情况下,您应该removeFromSuperview所有您没有显示的 Controller 。

在您的代码中,您仅在 HomeTabActionremoveFromSuperView

尝试改变它:

if let viewWithTag = self.view.viewWithTag(100) {
print("Tag 100")
viewWithTag.removeFromSuperview()
}

for v in self.view.subviews {
if v.tag == 100 {
v.removeFromSuperview()
}
}

但请记住,每次用户在不返回主页的情况下按任何选项卡(即:在“菜单”和“搜索”之间点击多次),看起来您只是在实例化许多 Controller ,无需删除它们。

每次实例化新 View 时,您都应该删除其他 View 。明智的做法是给每个 View Controller 一个唯一的标签,并在每次更改后删除隐藏的其他标签,而不仅仅是在返回主页时。或者至少,在创建新 View Controller 之前检查给定类型的 View Controller 是否已经实例化。

关于ios - Swift 多个 subview 并返回原始 TableView,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53354851/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com