2016-03-07 29 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

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

相關問題