2016-03-07 49 views
0

我想创建,我可以在我的应用程序使用一个定制的框架。当我在应用程序中从我的框架实例化我的第一个ViewController时,我想传入两个参数。的iOS:将参数传递给私人框架,同时初始化一个UIViewController

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) 
    } 
} 

现在,我想在实例NewVCAppDelegate

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') 
+0

看看这个http://stackoverflow.com/questions/33567189/self-type-不能待直接转换到anyclass-在延伸到目标-CC – sschale

回答

1

你传入NewVC实例的UIStoryboard INIT方法,期望类。改为使用NewVC.self

另外,如果你使用的故事板,init?(coder aDecoder: NSCoder)将被调用,而不是您的自定义初始化。您可以提供的视图控制器实例创建以下

代码后startColorendColor值应该解决您的问题:

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 
+0

感谢。我把打印报表。我通过了错误,但是,vc.startColor和endColor显示为零。 – user1107173

+0

我已经更新了我的答案。 –

相关问题