【问题标题】:Getting AppDelegate reference while creating framework swift快速创建框架时获取 AppDelegate 参考
【发布时间】:2021-06-30 08:29:57
【问题描述】:

我正在创建一个自定义框架。我需要引用 AppDelegate 来执行操作,例如获取窗口或其他一些委托。

示例代码:

static var safeArea: UIEdgeInsets {
    var padding: UIEdgeInsets = UIEdgeInsets.zero
    if #available(iOS 11.0, *) {
        if let b = appDel.window?.safeAreaInsets {
            padding = b
        }
    }
    return padding
}

我遇到的主要问题是我需要多个级别的 AppDelegate 引用。

对此的任何帮助都应该感激。

【问题讨论】:

  • UIApplication.shared.delegate?请注意,它可能在SceneDelegate?
  • @ElTomato 你有足够的代表来编辑问题。为什么不帮助人们而不是发布刻薄的 cmets
  • 创建框架时没有appdelegate类
  • @Paulw11 如果我纠正每一个错字,那将是我的日常工作。我确实有一份日常工作。
  • 好的,但是指出拼写和语法错误对于英语说得不好的人来说并不是特别有用或欢迎。在某些情况下,问题确实难以理解,但您清楚地理解了这种情况下的含义。

标签: ios swift appdelegate


【解决方案1】:

以下 cmets 的示例源:)。在框架内创建一个 sampleManager。将框架导入 appdelegate 并将 SampleManager.shared.delegate 设置为 self 作为弱引用。

public class SampleManager {

    public static let shared = SampleManager()
    
    public weak var delegate: UIApplicationDelegate?
    
    func doWhateverYouWant() {
    
    }
}
class AppDelegate: UIResponder, UIApplicationDelegate {

    var window: UIWindow?
    private let dependencyManager = DependencyManager()

    func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
        // Override point for customization after application launch.
        
        SampleManager.shared.delegate = self
        
        startAppCoordinator()
        return true
    }
}

【讨论】:

  • 主要问题是我没有 appDelegate 类。当你创建一个新项目作为框架时,它不包含 appdelegate/ Assets 等文件
  • 好的。那么,为什么不开发一个在应用程序初始化时需要 appDelegate 引用的 init 方法的管理器。您的框架将有一个负责创建 safeArea 属性的管理器类。在应用程序启动时的 appDelegate 中,您可以将框架管理器注入该方法并在其中提供 appdelegate 引用。然后,您可以在管理器中使用该 appdelegate 引用来计算属性值。
  • 你能和上面的实现分享一些代码 sn-p 吗?记住一件事,它并不重要,只是我需要执行 appdelegate 的其他操作。
  • 我编辑了我的答案@HAMZAZULFQAR :)。框架内的 SampleManager 现在能够访问 UIApplicationDelegate 方法。玩得开心:)
  • 明白你的意思希望它会起作用谢谢???
猜你喜欢
  • 2023-03-12
  • 2018-09-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-10-21
相关资源
最近更新 更多