【问题标题】:Accessing storyboard from custom framework not working从自定义框架访问情节提要不起作用
【发布时间】:2020-11-12 19:31:23
【问题描述】:

您好,我必须在应用委托中从自定义框架(LoginUIModule、LoginUIModule 有情节提要 LoginScreen.storyboard)访问情节提要。 我从主界面中删除了主故事板,并从主故事板文件基本名称以及 .plist 中删除了名称,但出现错误

原因:'在捆绑包 NSBundle 中找不到名为'LoginScreen' 的情节提要

注意:- LoginUIModule 是单独的模块,我需要在我的主 (OneAppllbs) 项目中访问它,该项目又是一个单独的模块

我在应用委托中使用的代码

import LoginUIModule

 self.window = UIWindow(frame: UIScreen.main.bounds)
    let storyboard = UIStoryboard(name: "LoginScreen", bundle: nil)
    let initialViewController = storyboard.instantiateViewController(withIdentifier: "LoginUIModuleViewController") as? LoginUIModuleViewController
    self.window?.rootViewController = initialViewController
    self.window?.makeKeyAndVisible()

【问题讨论】:

  • UIStoryboard: init(name: String, bundle storyboardBundleOrNil: Bundle?) - storyboardBundleOrNil 包含故事板文件及其相关资源的包。如果指定 nil,此方法会在当前应用程序的主包中查找。 由于 LoginScreen 不在主包中,因此您需要传入 LoginUIModule-Bundle。您可以在 Apple Bundle 文档中找到如何解决这个问题。 developer.apple.com/documentation/foundation/bundle
  • @DanielMarx 感谢您提供宝贵的评论和苹果开发者资源。得到解决方案并学习新概念。

标签: ios swift storyboard uistoryboard


【解决方案1】:

您需要设置 Bundle 才能访问 Storyboard。

首先为框架创建带有Bundle Identifier的storyboardBundle;

let storyboardName = "LoginScreen"
let storyboardBundle = Bundle(for: LoginUIModuleViewController.self)

或在框架中引用一个类:

let storyboardBundle = Bundle(identifier: "com.yourframework.id")

然后用这个包创建故事板:

let storyboard = UIStoryboard(name: storyboardName, bundle: storyboardBundle)

【讨论】:

  • 我们如何推送新的视图控制器,它又在不同的模块(DashboardModule)中,因为 navigation.push() 不起作用
  • 如果你可以访问一个类,你可以随心所欲地使用它。请将此作为新问题提出,并详细说明您想做什么以及到目前为止所做的事情。
【解决方案2】:

从框架中获取故事板

Storyboard ID 设置为.storyboard。例如frameworkStoryboardId

[Access to Framework bundle]

let frameworkStoryboard = UIStoryboard(name: "SomeViewController", bundle: frameworkBundle)

let frameworkViewController = frameworkStoryboard.instantiateViewController(withIdentifier: "frameworkStoryboardId") as? SomeViewController

【讨论】:

    猜你喜欢
    • 2012-06-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-02-13
    相关资源
    最近更新 更多