我如何在 Cocoa Touch Library 中使用故事板

How can i use storyboard in Cocoa Touch Library

我已经能够构建一个 Cocoa Touch 库,我打算将其用于在情节提要中呈现 ViewController,但事实证明我无法访问情节提要。我不断收到 NSInvalidArgumentException 错误,原因是:“找不到名为 'MyStoryboard'.

的故事板
let storyboard: UIStoryboard = UIStoryboard(name: "MyStoryboard", bundle: Bundle.main)
viewController.present(cryptoTransactionViewController, animated: true, completion: nil)

在这里您可以从应用程序的主捆绑包访问情节提要 Bundle.main 并且肯定不存在,因此崩溃

let storyboard: UIStoryboard = UIStoryboard(name: "MyStoryboard", bundle: Bundle.main)

您需要访问图书馆的捆绑包,所以尝试

let libBundle = Bundle(identifier:"com.library")
let storyboard: UIStoryboard = UIStoryboard(name: "MyStoryboard", bundle:libBundle)

您尝试访问的故事板不在您的 main 包中,它在框架的包中。

所以,您需要做的第一件事就是找到正确的捆绑包……

let bundleId = "com.your.bundle.id"
guard let bundle = Bundle.allFrameworks.first(where: { [=10=].bundleIdentifier == bundleId}) else {
    fatalError("Failed to find bundle with identifier \(bundleId).")
}

let storyboard: UIStoryboard = UIStoryboard(name: "MyStoryboard", bundle: bundle)

访问情节提要时,请确保包指向您正在处理的项目。

let bundleId = Bundle(identifier: "com.your.libraryBundle.id)

guard let bundle = Bundle.allFrameworks.first(where: { $0.bundleIdentifier == bundleId}) else { 致命错误("Failed to find bundle with identifier (bundleId).") } 让故事板:UIStoryboard = UIStoryboard(名称:"MyLibraryStoryboard",捆绑:捆绑)