gpt4 book ai didi

ios - 从自定义类调用 presentViewController

转载 作者:搜寻专家 更新时间:2023-10-31 08:12:44 26 4
gpt4 key购买 nike

我读了this postthis one关于如何在 UIViewController 子类之外调用 presentViewController 表单。在我的例子中,自定义类是 NSObject 的子类。以下方法是唯一有效的方法(来 self 阅读的示例):

UIApplication.sharedApplication().keyWindow?.rootViewController?.presentViewController(alertController, animated: true, completion: nil)

我的问题:是否有更好的解决方案不依赖于 appDelegate(据我所知,这种方法在设计方面不是很整洁)...

最佳答案

我有时会创建一个实用程序类来显示警报等。我通常做的是让我的呈现 View Controller 的方法将当前 View Controller 作为参数。这种方法非常有效。

编辑:

这是我的一个项目中文件 Utils.swift 中的示例方法。它定义了一个在当前 View Controller 上显示 UIAlertController 警报的类函数:

class Utils
{
static let sharedUtils = Utils()

class func showAlertOnVC(
targetVC: UIViewController,
var title: String,
var message: String)
{
title = NSLocalizedString(title, comment: "")
message = NSLocalizedString(message, comment: "")
let alert = UIAlertController(
title: title,
message: message,
preferredStyle: UIAlertControllerStyle.Alert)
let okButton = UIAlertAction(
title:"OK",
style: UIAlertActionStyle.Default,
handler:
{
(alert: UIAlertAction!) in
})
alert.addAction(okButton)
targetVC.presentViewController(alert, animated: true, completion: nil)
}
}

上面的代码定义了一个类Utils。请注意,它没有任何基类,这在 Swift 中是可以的。

接下来它定义了一个公共(public)静态变量 sharedUtils,您可以使用它来访问单例 Utils 类。

最后,它定义了一个类方法 showAlertOnVC,可用于在当前 View Controller 顶部显示 UIAlertController 警报。要使用 showAlertOnVC,您可以从当前 View Controller 调用它并将 self 作为 targetVC 参数传递。

关于ios - 从自定义类调用 presentViewController,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30156021/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com