我有一个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
而不重新创建视图。我View Controller Scene
中只有一个UIStoryboard
。
答案 0 :(得分:1)
根据该主题中的答案,不可能重用具有UIStoryBoard的多个子类的单个UIViewController场景。但是可以使用nib文件。
How to use single storyboard uiviewcontroller for multiple subclass
答案 1 :(得分:0)
您可能没有放置正确的视图控制器标识符:
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"
答案 2 :(得分:0)
您必须在故事板中将视图控制器的类设置为BViewController