我正在尝试为我的项目找出正确的viewcontroller / segue结构,我需要一些帮助。
如果“ B ”将来自“ A ”,则会检查语句是否为真。只有在为真时,才会立即显示“ C ”而不是“ B ”。用户继续“ D ”,并且从“ D ”开始,应该有一个展开的segue回到“ B ”。
我可以检查'{strong> B '的viewDidAppear()
中的if语句,但是在加载viewcontroller' C ”。它看起来不太好。
如果我尝试在viewDidLoad()
中创建if语句,我会收到错误:
尝试在视图不在窗口层次结构中的“ B ”上显示“ C ”
也许还有更好的方法可以解决这个问题?
答案 0 :(得分:0)
如果没有实际显示您所转移的每个ViewController,则无法使用segues。仅在实际呈现ViewController之后调用Segues,例如,您不能从viewDidLoad
中删除。
跳过具有segues的ViewController的唯一选择是,如果你设置了两个不同的segue,一个是你的“完整路径”,比如A->B->C
,另一个是你跳过B
, A->C
。因此,您需要从C
和A
获得B
的segue。
当然使用这种方法你不能将unwind segue用于根本没有呈现的ViewController。您可以通过不使用展开segues来解决此问题,但也可以通过“向后”设置segues来解决此问题。我的意思是“向后”是你设置一个segue说D->B
,然后即使你的segue的顺序是B
,你也可以“回”到A->C->D->B
。
答案 1 :(得分:0)
我想我终于找到了一个非常简洁的解决方案。我添加了另一个viewcontroller,它包含两个容器视图 - 一个嵌入' B ',另一个包含' C '。应该显示哪个容器由这两个简单的函数管理:
func switchToB() {
containerB.isHidden = false
containerC.isHidden = true
}
func switchToC() {
containerB.isHidden = true
containerC.isHidden = false
}
我让' D '展开到新的viewcontroller,然后触发switchToC()
。