我想从nib加载UIViewController
,并返回它的动态类型。
我尝试了几个我找到的函数,但总是UIViewController
中的返回类型。
我检查了两次,我的笔尖名称等于类名AlertVC
。
我还将文件的nib所有者设置为AlertVC
。
我用来从笔尖加载的函数:
extension UIViewController {
class func loadMeFromXib<T: UIViewController>(_ senderVC:UIViewController, prepareForVC:((T) -> T?)? = nil) {
var viewController:T = T.instantiateFromNib()
// viewController type is UIViewController instead AlertVC
}
static func instantiateFromNib() -> Self {
func instantiateFromNib<T: UIViewController>(_ viewType: T.Type) -> T {
return T.init(nibName: String(describing: T.self), bundle: nil)
}
return instantiateFromNib(self)
}
}
也尝试过:
class func loadMeFromNib<T: UIViewController>() -> T {
return T(nibName: String(describing: self), bundle: nil)
}
但我的结果总是如此 - UIViewController。
像这样使用:
AlertVC.loadMeFromXib(senderVC!)
我还遇到了调试器错误:use of undeclared type 'T'
答案 0 :(得分:0)
我有这个问题。如本文所述: Perform a segue from an Xib to ViewContoller
您不能在Xib类中调用performSegueWithIdentifier,只能在a中调用 UIViewController类。
我结束了:
在Xib类和UIViewController类中实现创建委托 代表协议。