簡體   English   中英

無法在 Swift Package 中顯示 UIViewController 及其 Storyboard

[英]Not able to present UIViewController with its Storyboard in a Swift Package

我正在構建一個單獨的功能作為 swift package。在 package 中有一個視圖 controller 及其 storyboard。我在實例化和呈現視圖 controller 時遇到問題。我得到這個錯誤:88

在捆綁 NSBundle 中找不到名為“MyIdCardVC”的 storyboard...

MyIdCardVC.swift和MyIdCardVC.storyboard都添加到package。

這是 Package.swift 聲明的一部分:

let package = Package(
name: "IDCard",
platforms: [
    .iOS(.v11)
],
products: [ 
    .library(name: "IDCard", targets: ["IDCard"]),
],

我從我的應用程序中展示包的視圖 controller,如下所示:

import UIKit
import IDCard
 
class ViewController: UIViewController {

    override func viewDidLoad() {
        super.viewDidLoad()
        // Do any additional setup after loading the view.
        
        let vc = IDCard.MyIdCardVC.getStoryboardVC()
        present(vc, animated: true, completion: nil)
    }
 
}

“getStoryboardVC”是在 package 中聲明的 static 擴展方法

public extension UIViewController{

public static func getStoryboardVC() -> UIViewController {

    let storyboard = UIStoryboard(name: String(describing: self), bundle: nil)
    return storyboard.instantiateInitialViewController()!
}

MyIDCardVC.storyboard 的外觀如下:

在此處輸入圖像描述

我在實例化故事板的視圖 controller 時使用Bundle.module解決了它Bundle.module指的是包含 package:

public extension UIViewController{
    
        public static func getStoryboardVC() -> UIViewController {
            let storyboard = UIStoryboard(name: String(describing: self),
 bundle: Bundle.module)// key part is Bundle.module
            return storyboard.instantiateInitialViewController()!
        }
 }

然后在應用程序中,我像這樣顯示 package 視圖 controller:

   @IBAction func openCard(){
        let vc = IDCard.MyIdCardVC.getStoryboardVC() as! IDCard.MyIdCardVC
        vc.personNo = "11111"
        vc.personId = "8888888"
        present(vc, animated: true, completion: nil)
    }

在 storyboard 中,指定模塊並取消選中 Inherit Module From Target 在此處輸入圖像描述

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM