Ios 让某些ViewController访问函数的最有效方法
我有一个包含大量Ios 让某些ViewController访问函数的最有效方法,ios,swift,uialertview,access-control,Ios,Swift,Uialertview,Access Control,我有一个包含大量ViewControllers的应用程序。还有一组函数返回UIAlertControllers,通知用户与其帐户相关的事件。 以下是一个此类功能的示例: func signInSuccessAlert() -> UIAlertController { //signInSuccessAlert let signInSuccessAlert = UIAlertController(title: "Success", message: "You h
ViewController
s的应用程序。还有一组函数返回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
}
我的目标是能够在一行中显示这些UIAlertController
s。像这样:
present(signInSuccessAlert(), animated: true, completion: nil)
使这些函数只对需要它们的
ViewController
s可用的最佳方法是什么?而不是全局声明它们。您可以创建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
}
}
这样,所有ViewController都可以访问这些功能。如果只想访问某些ViewController,则必须使用评论中建议的AgRizzo协议。制定一个协议声明它们。然后在协议的扩展中实现它们。任何需要访问的ViewController都应符合协议。