好的,这就是我的计划(我还没有完成):
我希望container ViewController
拥有3个ViewControllers
:
view
下方),用于选择要在ContentVC中显示的页面ViewControllers
代表不同的网页(例如OverviewContentVC
,MessagesContentVC
,...) InfoVC 和 MenuVC 应始终保持静态。他们不会改变。
但是当您在MenuVC.view
内选择一个页面时, ContentVC 应该加载相应的内容ViewController
。这意味着,它需要删除/取消当前内容ViewController
(并将其从container ViewController
中移除)并将其替换为新内容。
我不知道该怎么做。
以下是我对此的一些看法。如果有人可以帮助我,我真的很感激。也许我的方法不太正确。
首先,我会将contentVC
作为属性添加到我的Container View Controller
:
var contentVC: UIViewController?
然后,在某些方法(例如viewDidLoad
)中,我会将contentVC
添加为子项:
contentVC = OverviewContenVC() // default VC
self.addChildViewController(contentVC!)
contentVC!.view.frame = ...
self.view.addSubview(contentVC!.view)
contentVC!.didMove(toParentViewController: self)
现在,用户点击菜单并希望转到MessagesContentVC
。这是我的想法:
contentVC!.removeFromParentViewController()
contentVC!.view.removeFromSuperview()
contentVC = MessagesContentVC() // does this deinit OverviewContentVC?
// Do the same steps as above to add the new childVC
显然,我可以将这两个代码片段组合在一起,并将它们合并为一个method
。这只是为了表明我的想法。
另外,你可以做各种动画。
但我不确定这是否是可接受的解决方案。例如,如果MessagesContentVC
需要几秒钟才能加载(这会很糟糕,但会怎样),该怎么办?也许我可以把这段代码放到后台线程中?
感谢您的帮助!