【问题标题】:Most effective way to give certain ViewControllers access to functions让某些 ViewController 访问功能的最有效方法
【发布时间】:2017-07-16 13:19:25
【问题描述】:

我有一个包含大量ViewControllers 的应用程序。还有一组函数返回UIAlertControllers,通知用户有关其帐户的事件。 下面是一个这样的函数的例子:

func signInSuccessAlert() -> UIAlertController {
        //signInSuccessAlert
        let signInSuccessAlert = UIAlertController(title: "Success", message: "You have been successfully signed in!", preferredStyle: .alert)
        signInSuccessAlert.addAction(UIAlertAction(title: "Okay", style: .default, handler: nil))
        return signInSuccessAlert
    }

我的目标是能够在一行中显示这些UIAlertControllers。像这样:

present(signInSuccessAlert(), animated: true, completion: nil)

使这些功能仅对需要它们的ViewControllers 可用的最佳方法是什么?而不是在全球范围内声明它们。

【问题讨论】:

  • 制定一个协议来声明它们。然后在协议的扩展中实现它们。任何需要访问的 ViewController 都应该符合协议。

标签: ios swift uialertview access-control


【解决方案1】:

您可以创建 UIViewController 的扩展并在其中声明所有这些功能。 像这样的:

extension UIViewController
{

    func signInSuccessAlert() -> UIAlertController {
        //signInSuccessAlert
        let signInSuccessAlert = UIAlertController(title: "Success", message: "You have been successfully signed in!", preferredStyle: .alert)
        signInSuccessAlert.addAction(UIAlertAction(title: "Okay", style: .default, handler: nil))
        return signInSuccessAlert
    }

}

这样,您的所有视图控制器都可以访问这些功能。如果您只想授予对某些视图控制器的访问权限,则必须使用评论中建议的 AgRizzo 等协议。

【讨论】:

    猜你喜欢
    • 2021-09-18
    • 2012-05-31
    • 2022-09-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-10-10
    • 2018-12-11
    相关资源
    最近更新 更多