gpt4 book ai didi

swift - 快速显示来自共享类的警报

转载 作者:行者123 更新时间:2023-11-28 08:08:23 25 4
gpt4 key购买 nike

我正在尝试制作一个供所有 View Controller 使用的警报功能:

import UIKit
class MyFuncs: NSObject {

static let shared: MyFuncs = MyFuncs()

func MsgBox(msg: string)
{
let alert = UIAlertController(title: "Test", message:msg, preferredStyle: UIAlertControllerStyle.alert)

// add an action (button)
alert.addAction(UIAlertAction(title: "OK", style: UIAlertActionStyle.default, handler: nil))

// show the alert
let appDelegate = UIApplication.shared.delegate as! AppDelegate
appDelegate.window?.rootViewController?.present(alert, animated: true, completion: nil)

}
}

但是,它在 (view controllers).swift 中起作用,但在 AppDelegate.swift 中的 didFinishLaunchingWithOptions 函数中不起作用。我错过了什么?谢谢。

最佳答案

我无法弄清楚如何从任意类调用警报(我最初使用的是扩展,但像你一样,当我需要在 View Controller 之外调用它时遇到了问题),所以我写了一个函数创建一个新窗口以在以下位置显示警报:

extension UIWindow {
static func makeWindow () -> UIWindow {
let window = UIWindow(frame: UIScreen.main.bounds)
window.rootViewController = UIViewController()
window.windowLevel = (UIApplication.shared.windows.last?.windowLevel ?? 0) + 1
window.makeKeyAndVisible()

return window
}
}

并制作了一个带有调用它的所有逻辑的警报子类:

class MyAlertController: UIAlertController {
let alertWindow = UIWindow.makeWindow()

static func doAlert (_ title: String, alertMessage: String) {
let alert = MyAlertController(title: title, message: alertMessage, preferredStyle: .alert)
alert.addAction(UIAlertAction(title: "OK", style: .cancel, handler: nil))
alert.alertWindow.rootViewController?.present(alert, animated: true, completion: nil)
}
}

然后在需要时调用 MyAlertController.doAlert

关于swift - 快速显示来自共享类的警报,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44442544/

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