Swift iOS:初始化UIViewController时将参数传递给私有框架
我正在尝试创建一个可以在我的应用程序中使用的自定义框架。当我在应用程序中从我的框架实例化我的第一个Swift iOS:初始化UIViewController时将参数传递给私有框架,swift,swift2,ios9,ios-frameworks,Swift,Swift2,Ios9,Ios Frameworks,我正在尝试创建一个可以在我的应用程序中使用的自定义框架。当我在应用程序中从我的框架实例化我的第一个ViewController时,我想传入两个参数 import UIKit public class NewVC: UIViewController { public var startColor: String? public var endColor: String? public required init(startColor: String, endColor:
ViewController
时,我想传入两个参数
import UIKit
public class NewVC: UIViewController {
public var startColor: String?
public var endColor: String?
public required init(startColor: String, endColor: String) {
self.startColor = startColor
self.endColor = endColor
super.init(nibName: "sb", bundle: nil)
}
public required init?(coder aDecoder: NSCoder) {
super.init(coder:aDecoder)
}
}
现在,我正在尝试在我的AppDelegate
中实例化NewVC
:
import NewVCFramework
//...
let vc = NewVC(startColor:"00ff33a", endColor:"ff0c756")
let s = UIStoryboard(name: "sb", bundle: NSBundle(forClass: vc))
//I get an error on the line above that points at vc
self.window?.rootViewController = s.instantiateInitialViewController()
下面是我得到的错误:
Error: Cannot convert value of type 'NewVC' to expected argument type 'AnyClass' (aka 'AnObject.Type')
您正在将
NewVC
实例传递给UIStoryboard
init方法,该方法需要类。改用NewVC.self
此外,如果使用故事板,将调用init?(coder-aDecoder:NSCoder)
,而不是自定义init。创建视图控制器实例后,可以提供startColor
和endColor
值
下面的代码应该可以解决您的问题:
import NewVCFramework
//...
let s = UIStoryboard(name: "sb", bundle: NSBundle(forClass: NewVC.self))
let vc = s.instantiateInitialViewController() as !NewVC // Will call init?(coder aDecoder: NSCoder) for NewVC
vc.startColor = "00ff33a"
vc.endColor = "ff0c756"
self.window?.rootViewController = vc
看看这个谢谢。我把报表打印出来。我通过了这个错误,但是vc.startColor和endColor显示为nil。