iMessage 扩展:从不同的目标获取 bundle nil

Posted

技术标签:

【中文标题】iMessage 扩展:从不同的目标获取 bundle nil【英文标题】:iMessage Extension : Getting bundle nil from different target 【发布时间】:2017-01-26 14:18:48 【问题描述】:

我有一个现有的应用程序并想创建一个 iMessage 扩展程序。

所以我在我的项目中添加了目标 iMessage 扩展。现在我想通过容器视图在该扩展中显示我现有的视图。我添加了代码:

let mainBundle = Bundle(identifier:"com.marvel.nearby")
print("MAIN_BUNDLE : \(mainBundle)") // getting nil
let storyboard = UIStoryboard(name: "Main", bundle: mainBundle)
let viewController = storyboard.instantiateViewController(withIdentifier: "MResourcesVC")
self.showViewControllerInContainerView(viewController)

Swift iMessage 扩展类中:MessagesViewController.swift

但得到零。我该怎么办?

如果这种方式是错误的,那么在 iMessage 扩展中显示 viewcontroller 的正确方式是什么。

【问题讨论】:

【参考方案1】:

您必须将storyboard.storyboard 文件添加到您的目标:

要获得正确的捆绑包,请使用:

Bundle(for: type(of: self))

【讨论】:

我尝试过,但我必须通过 bundle 访问它,我得到 bundle nil 更新答案。 如果已经安装了 pod,我该如何使用呢? 1.) 如果这解决了您的问题,请接受答案。 2)我不明白“如果已经安装了 pod,我该如何使用它”。请花一些时间并努力提出问题。你是说 CocoaPods 吗?如果是这样,我不明白 Bundle 问题与 Pod 的上下文? 实际上在现有项目中我正在使用 sdwebache pod,它在 viewcontroller 中我正在使用它,并且我希望在扩展中也显示相同的视图控制器

以上是关于iMessage 扩展:从不同的目标获取 bundle nil的主要内容,如果未能解决你的问题,请参考以下文章

如何本地化 iMessage 贴纸?

带有 Parse 的 iMessage 扩展

有没有办法从容器应用程序中打开 iMessage 扩展程序?

ios 11 imessage 扩展 message.url 无法打开 safari

iMessage 扩展和 CoreData

与父级不同,从 iMessage 应用程序呈现的视图控制器被 iMessage 顶栏覆盖