关闭子视图后重新加载视图
Reload a View after Closing its subView
我有一个名为 A 的 UIViewController,我正在像这样向 A 控制器添加另一个控制器
self.AView = (self.storyboard!.instantiateViewController(withIdentifier: "BView") as? BViewController)!
self.addChild(self.BView)
self.BView.view.frame = CGRect(x: 0, y: self.view.frame.height - 450, width: self.view.frame.width , height: 450)
self.view.addSubview((self.BView.view)!)
self.view.bringSubviewToFront(self.BView.view)
我正在使用下面的函数关闭它
func closeCurrentView(){
self.view.removeFromSuperview()
}
关闭后我需要重新加载 My Aview
我已经在我的 Aview 中添加了这个,但在关闭 BView 后没有被调用
override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(true)
}
viewWillAppear 方法仅在视图将进入视图层次结构时被调用,在这种情况下,在 BView 被移除之前 AView 已经在视图层次结构中,即使它不可见(因此当 BView 时不调用 AViewController.viewWillAppear已移除)。您有两个选择:
- 将 AViewController 的引用传递给 BViewController(在初始化期间或之后),以便您可以在 BViewController 中执行此操作 class:
func closeView(){
self.view.removeFromSuperview()
self.AViewController.view.layoutIfNeeded() // or do something else to update AView
}
- 移除 AViewController 中的 BView class:
func closeBView(){
self.BViewController.view.removeFromSuperview()
self.view.layoutIfNeeded() // or do something else to update AView
}
我有一个名为 A 的 UIViewController,我正在像这样向 A 控制器添加另一个控制器
self.AView = (self.storyboard!.instantiateViewController(withIdentifier: "BView") as? BViewController)!
self.addChild(self.BView)
self.BView.view.frame = CGRect(x: 0, y: self.view.frame.height - 450, width: self.view.frame.width , height: 450)
self.view.addSubview((self.BView.view)!)
self.view.bringSubviewToFront(self.BView.view)
我正在使用下面的函数关闭它
func closeCurrentView(){
self.view.removeFromSuperview()
}
关闭后我需要重新加载 My Aview
我已经在我的 Aview 中添加了这个,但在关闭 BView 后没有被调用
override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(true)
}
viewWillAppear 方法仅在视图将进入视图层次结构时被调用,在这种情况下,在 BView 被移除之前 AView 已经在视图层次结构中,即使它不可见(因此当 BView 时不调用 AViewController.viewWillAppear已移除)。您有两个选择:
- 将 AViewController 的引用传递给 BViewController(在初始化期间或之后),以便您可以在 BViewController 中执行此操作 class:
func closeView(){
self.view.removeFromSuperview()
self.AViewController.view.layoutIfNeeded() // or do something else to update AView
}
- 移除 AViewController 中的 BView class:
func closeBView(){
self.BViewController.view.removeFromSuperview()
self.view.layoutIfNeeded() // or do something else to update AView
}