0
我在我的iPhone應用程序可能需要重寫一些viewControllers所以我制定了以下的方法來發現是否越權的ViewController存在我用它從原來的以其他方式使用viewController。編程修改將不適用於兒童類(的viewController)
internal class func getOverride<T: RBaseViewController>(id: String, mClass: AnyClass) -> T
{
let storyBoard = UIStoryboard(name: RConstants.Static.MAIN_STORYBOARD_NAME, bundle: nil)
let originalViewController = storyBoard.instantiateViewControllerWithIdentifier(id) as! T
var className = NSStringFromClass(mClass)
// Removing the prefix of class name if exists
if let index: String.Index = className.rangeOfString(".")?.startIndex.successor()
{
className = className.substringFromIndex(index)
}
// Override class name
var overrideClassName = className! + RConstants.Static.CLASSES_OVERRIDE_SUFFIX
if let mClass: AnyClass = NSClassFromString(overrideClassName)
{
RLog.debug("View controller override found")
// ViewController is overrode
if let overeideClass: T.Type = mClass as? T.Type
{
// Create instance and return
let overrodeViewController = overeideClass()
let view = originalViewController.view
originalViewController.view = nil
overrodeViewController.view = view
return overrodeViewController
}
}
return originalViewController
}
的覆蓋的viewController 從原來的一個延伸,只是也許有些方法會改變。
但問題是,我在viewController上應用的修改不影響overrode viewController。
例如,在父母的viewController類,我有以下代碼:
override func viewDidLoad()
{
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
title = "Map"
}
但在兒童的viewController的標題是空,這個問題不只是冠軍,任何那在主視圖控制器中以編程方式更改不會影響子視圖控制器。
有什麼建議嗎?
幽默我,如果你嘗試在你的RBaseViewController類中打印「Hello world」,它會打印字符串嗎? –
@EnricoSusatyo是的,我現在測試它,打印它。 –
從哪裏,以及何時調用getOverride?該方法使用什麼控制器(或其他對象)? – rdelmar