У меня есть много контроллеров представления, которые используют те же две функции, которые показывают и скрывают всплывающее окно для меня. Каждый раз, когда я их использую, я спрашиваю себя, не лучше ли поместить их в глобальный класс, например, PopupUtils, и установить функции как stati c functions.
Я сделал это, и это сработало, но Я не уверен, что это хорошая вещь, потому что я должен передать своей функции три аргумента: родительский контроллер представления, дочерний контроллер представления и представление popup_container
Так как все это передается val, там не проблема с памятью? или любая другая проблема, о которой я должен знать?
Вот мой класс stati c, называемый Popup Utils
class PopupUtils {
static func showPopupView(parentViewController: UIViewController, childViewController: UIViewController, popupContainer: UIView) {
parentViewController.addChild(childViewController)
popupContainer.addSubview(childViewController.view)
childViewController.view.frame = popupContainer.bounds
childViewController.view.autoresizingMask = [.flexibleWidth, .flexibleHeight]
childViewController.didMove(toParent: parentViewController)
UIView.transition(with: popupContainer, duration: 0.2, options: .transitionCrossDissolve, animations: {
popupContainer.isHidden = false
})
}
static func removePopupView(childViewController: UIViewController, popupContainer: UIView){
// Remove pop up VC from children
childViewController.willMove(toParent: nil)
childViewController.view.removeFromSuperview()
childViewController.removeFromParent()
// Hide pop up container
popupContainer.isHidden = true
// Release language menu
NotificationCenter.default.post(name: NSNotification.Name(rawValue: "releaseMenuSwipe"), object: nil)
}
}