Как передать функцию в качестве параметра для действия оповещения? - PullRequest
0 голосов
/ 22 октября 2018

Это моя глобальная функция.Я хочу передать действие как другую функцию.Поэтому, пожалуйста, дайте мне какое-нибудь решение для этого.

showAlert(title: "Title", message: "Hello", viewController: self, action: self.deactivateViewOne())

 func showAlert(title: String, message: String, viewController: UIViewController, action: -----){
        let alert = UIAlertController(title: title, message: message, preferredStyle: UIAlertController.Style.alert)
        alert.addAction(UIAlertAction(title: NSLocalizedString("Cancel", comment: ""), style:   UIAlertAction.Style.cancel, handler: nil))
        alert.addAction(UIAlertAction(title: NSLocalizedString("Deactivate", comment: ""), style:   UIAlertAction.Style.cancel, handler: { (alert) in
            action
            }))
        viewController.present(alert, animated: true, completion: nil)
        let subview = (alert.view.subviews.first?.subviews.first?.subviews.first!)! as UIView
        subview.layer.cornerRadius = 10
        subview.backgroundColor = Common.backgroundColor
        subview.layer.borderWidth = 0.5
        subview.layer.borderColor = Common.fontColor.cgColor
    }
 func deactivateViewOne() {
        self.viewOne.layer.borderColor = Common.greyColor.cgColor
        self.viewOneStartTime.textColor = Common.greyColor
        self.viewOneStopTime.textColor = Common.greyColor
        self.ViewOneHeatLabel.textColor = Common.greyColor
        self.ViewOneUhrLabel.textColor = Common.greyColor
        self.ViewOneDashLabel.textColor = Common.greyColor
        self.viewOneStartTime.text = "--:--"
        self.viewOneStopTime.text = "--:--"
    }

1 Ответ

0 голосов
/ 22 октября 2018

Просто используйте замыкания.

func showAlert(title: String, message: String, viewController: UIViewController, action: @escaping () -> ()) {
    let alert = UIAlertController(title: title, message: message, preferredStyle: UIAlertController.Style.alert)
    alert.addAction(UIAlertAction(title: NSLocalizedString("Cancel", comment: ""), style:   UIAlertAction.Style.cancel, handler: nil))
    alert.addAction(UIAlertAction(title: NSLocalizedString("Deactivate", comment: ""), style:   UIAlertAction.Style.default, handler: { (alert) in
        action()
    }))
    viewController.present(alert, animated: true, completion: nil)
    let subview = (alert.view.subviews.first?.subviews.first?.subviews.first!)! as UIView
    subview.layer.cornerRadius = 10
    subview.backgroundColor = Common.backgroundColor
    subview.layer.borderWidth = 0.5
    subview.layer.borderColor = Common.fontColor.cgColor
    }

и используйте:

showAlert(title: "Title", message: "Hello", viewController: self, action: self.deactivateViewOne)
...