我将 PageViewController 添加到普通视图控制器作为viewDidAppear()HomeViewController 中的子视图,如下所示:
if showTutorial == false {
addChild(controller)
controller.view.frame = view.frame
view.addSubview(controller.view)
controller.didMove(toParent: self)
}
Run Code Online (Sandbox Code Playgroud)
它有效,但我不知道如何再次删除它- PageViewController 包含一个在其页面中导航的按钮。到达某个页面时,我想通过单击 PageViewController 内部的按钮再次从 HomeViewController 中删除 PageViewController。
我怎样才能这样做呢?
PageViewController 内部的按钮:
@objc func buttonAction(sender: UIButton!) {
if currentTutorialPage != 4 {
currentTutorialPage += 1
self.setViewControllers([self.viewControllerList[currentTutorialPage]], direction: .forward, animated: false, completion: nil)
view.bringSubviewToFront(nextButton)
view.bringSubviewToFront(prevButton)
} else {
tutorialSeen = true
defaults.set(tutorialSeen, forKey: "tutorialSeen")
}
}
Run Code Online (Sandbox Code Playgroud)
你可以试试
self.view.removeFromSuperview()
Run Code Online (Sandbox Code Playgroud)
为了完整起见,您可以使用此扩展
@nonobjc extension UIViewController {
func add(_ child: UIViewController, frame: CGRect? = nil) {
addChild(child)
if let frame = frame {
child.view.frame = frame
}
view.addSubview(child.view)
child.didMove(toParent: self)
}
func remove() {
willMove(toParent: nil)
view.removeFromSuperview()
removeFromParent()
}
}
Run Code Online (Sandbox Code Playgroud)
然后
@objc func buttonAction(sender: UIButton!) {
if currentTutorialPage != 4 {
currentTutorialPage += 1
self.setViewControllers([self.viewControllerList[currentTutorialPage]], direction: .forward, animated: false, completion: nil)
view.bringSubviewToFront(nextButton)
view.bringSubviewToFront(prevButton)
} else {
tutorialSeen = true
defaults.set(tutorialSeen, forKey: "tutorialSeen")
self.remove()
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
805 次 |
| 最近记录: |