[英]Swift3: Casting UIViewController Subclass Fails
我有一个ViewController( BViewController
),它继承自另一个UIViewController
子类( AViewController
)。 (我要这样做的原因是我在情节提要中重复使用同一视图3次以上以用于不同的屏幕。)
当我打电话时:
let storyboard: UIStoryboard = UIStoryboard(name: "Main", bundle: nil)
let vc = storyboard.instantiateViewController(withIdentifier: "AViewController") as! BViewController
self.show(vc, sender: self)
我收到此错误:
Could not cast value of type 'test.AViewController' (0x10d08b478) to 'test.BViewController' (0x10d08b3f0).
这是我的子类,其中没有任何子类。
class AViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
}
}
--
class BViewController: AViewController {
override func viewDidLoad() {
super.viewDidLoad()
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
}
}
故事板中的类设置为AViewController
因为我试图在所有子级之间共享IBOutlets
,而无需重新创建视图。 我的UIStoryboard
只有一个View Controller Scene
。
根据该线程的答案,不可能通过UIStoryBoard将单个UIViewController场景与多个子类重用。 但是,nib文件是可能的。
您可能没有放置正确的视图控制器标识符:
let storyboard: UIStoryboard = UIStoryboard(name: "Main", bundle: nil)
let vc = storyboard.instantiateViewController(withIdentifier: "BViewController") as! BViewController
self.show(vc, sender: self)
(BViewController而不是AViewController)
编辑 :这是一个示例:我的情节提要中有一个SignupVC视图控制器,但其情节提要ID为“ signup_vc”
您必须在情节提要中将视图控制器的类设置为BViewController
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.