我有一个标签栏控制器(带有底部菜单),也是一个顶部菜单。问题是我不想将黄色和绿色视图链接到标签栏(因为用户将使用顶部菜单而不是底部菜单来更改视图)。显示已经在导航堆栈上的视图控制器
我有一个问题,每次我点击按钮的视图的新实例将堆栈(所以我最终有类似V1 - > V2 - > V3 - > V2 - > V4等等上)
我的部分解决方案是这样的:
@IBAction func yellowViewButtonAction(_ sender: AnyObject)
{
let storyboard = UIStoryboard(name: "Main", bundle: nil)
let controller = storyboard.instantiateViewController(withIdentifier: "YelloViewController") as! YelloViewController
if let viewControllers = navigationController?.viewControllers {
for viewController in viewControllers {
// some process
if viewController is YelloViewController {
print("View is on stack")
}
}
let storyboard = UIStoryboard(name: "Main", bundle: nil)
let controller = storyboard.instantiateViewController(withIdentifier: "YelloViewController") as! YelloViewController
self.navigationController?.pushViewController(controller, animated: false)
}
}
我可以看到的看法是对导航堆栈,因为for
内if
语句是true
。问题是,我如何检索它而不是推送同一视图的新实例? (因为除了现在这个庞大的内存问题,我也失去了我对视图的任何数据)。
我想保留堆栈中的所有内容。
实施例:
V1 - > V2 - > V3 - > V4(当前视图)
如果我回到V1从V4我仍然希望有V4,V3及V2导航控制器上叠加。
另一个问题是,如果这种解决方案是苹果可能拒绝的东西。
我很感激任何帮助。
我需要导航控制器,因为当我按下黄色和绿色的意见我还是能看到底部栏菜单。就像我说过的,我希望视图保持不变,如果我弹出,我将丢失视图上的所有数据。 – Adrian
您不需要导航控制器即可查看底部的菜单栏。看看链接中的教程,你会看到:)另外,我提供的代码仅移动视图,以便这些视图控制器的“内部”状态保持不变。 – repoguy
即时通讯试图说的是我不想自定义底部菜单栏,因为我已经有一个。我希望能够在导航控制器堆栈中的视图之间切换。 – Adrian