swift 无法将型别'String'的值转换为预期的参数型别'NSStoryboard.Name'

6ju8rftf  于 2022-12-10  发布在  Swift
关注(0)|答案(3)|浏览(102)

我正在swift中尝试以下操作:

var storyboard = NSStoryboard.init(name: "Actors", bundle: nil)

这会产生错误:无法将类型为“String”的值转换为预期的参数类型“NSStoryboard. Name”
根据类引用,NSStoryboard.Name应该是一个没有文件扩展名的字符串,这是我提供的。
有什么不对吗?

iaqfqrcu

iaqfqrcu1#

NSStoryboard.Name在命名空间中有自己的作用域,以便能够执行此操作:
第一个

zy1mlcev

zy1mlcev2#

这应该可以解决问题

var storyboard = NSStoryboard.init(name: NSStoryboard.Name(rawValue: "Actors"), bundle: nil)
bbuxkriu

bbuxkriu3#

enum Storyboards: String {
   case main = "Main"

   func instantiateVC<T>(_ identifier: T.Type) -> T?  {
      let storyboard = NSStoryboard(name: rawValue, bundle: nil)
      guard let viewcontroller = storyboard.instantiateController(withIdentifier: String(describing: identifier)) as? T else { return nil}
      return viewcontroller
  }
}

//Usage
let tabViewController = Storyboards.main.instantiateVC(IDTabViewController.self)
window!.contentViewController = tabViewController

相关问题