【发布时间】:2019-04-26 01:07:34
【问题描述】:
当单击button 时,我想要删除一个覆盖层,从而关闭ViewController。我已经调试过了,delegate 目前返回零。我不确定我在这里做错了什么。我错过了实施其他的东西吗?我什至尝试过打印语句,但什么都看不到。
protocol DismissOverlayDelegate: class {
func dismissOverlay(_ sender: PlayersViewController)
}
class PlayersViewController: UIViewController {
weak var delegate: DismissOverlayDelegate?
@IBAction func getStartedTapped(_ sender: UIButton) {
self.delegate?.dismissOverlay(self)
}
}
在我的ViewController 中实现delegate 方法
class HomeViewController: UIViewController, DismissOverlayDelegate {
@IBOutlet weak var customOverlay: CustomOverlayView!
let playersViewController = PlayersViewController()
override func viewDidLoad() {
super.viewDidLoad()
self.playersViewController.delegate = self
}
func dismissOverlay(_ sender: PlayersViewController) {
self.customOverlay.removeFromView()
}
}
delegate = (DismissOverlayDelegate?) nil
PlayersViewController 嵌入到 UIPageViewController 中
class HomeViewController: UIPageViewController, UIPageViewControllerDataSource {
var pages = [UIViewController]()
override func viewDidLoad() {
super.viewDidLoad()
for storyboardIDs in ["playersVC1","playersVC2"] {
let viewController = self.storyboard?.instantiateViewController(withIdentifier: storyboardIDs)
self.pages.append(viewController!)
}
self.dataSource = self
self.setViewControllers([self.pages.first!], direction: .forward, animated: true)
}
func pageViewController(_ pageViewController: UIPageViewController, viewControllerBefore viewController: UIViewController) -> UIViewController? {
let currentIndex = self.pages.firstIndex(of: viewController)!
if currentIndex > 0 {
return self.pages[currentIndex - 1]
}
return nil
}
func pageViewController(_ pageViewController: UIPageViewController, viewControllerAfter viewController: UIViewController) -> UIViewController? {
let currentIndex = self.pages.firstIndex(of: viewController)!
if currentIndex < (self.pages.count - 1) {
return self.pages[currentIndex + 1]
}
return nil
}
}
【问题讨论】:
-
您的实例
playersViewController不是屏幕上的实例,您需要在视图控制器堆栈中获取实际实例。您不能只使用PlayersViewController()创建实例。 -
您如何在代码中进一步使用
playersViewController? -
它只是一个帮助
viewController,我想在按下按钮时摆脱它。从superView中删除它 -
您是如何添加
playersViewController的?向我们展示该代码。 -
它嵌入在
UIPageViewController
标签: ios swift delegates overlay delegation