Ios 将视图控制器视图添加到子视图时发现无
我有一个带有表视图的视图控制器,需要将其作为子视图添加到另一个视图控制器,但是当我添加视图控制器的视图时,我得到一个指向表的nil。所有的连接都在那里,但无法破解它崩溃的原因 子控制器Ios 将视图控制器视图添加到子视图时发现无,ios,swift,Ios,Swift,我有一个带有表视图的视图控制器,需要将其作为子视图添加到另一个视图控制器,但是当我添加视图控制器的视图时,我得到一个指向表的nil。所有的连接都在那里,但无法破解它崩溃的原因 子控制器 class childController: UIViewController, UITableViewDelegate, UITableViewDataSource { @IBOutlet weak var table: UITableView! override func viewDidL
class childController: UIViewController, UITableViewDelegate, UITableViewDataSource {
@IBOutlet weak var table: UITableView!
override func viewDidLoad() {
super.viewDidLoad()
table.delegate = self
table.dataSource = self
}
}
父控制器
func presentChildController() {
let childVC = childController()
self.view.addSubview(childVC.view)
}
此代码是完全非法的:
func presentChildController() {
let childVC = childController()
self.view.addSubview(childVC.view)
}
您不能简单地创建视图控制器、获取其视图并将其视图填充到您自己的视图中。如果您希望视图控制器(self
)作为父视图控制器运行,并且childController
作为子视图控制器运行,那么您必须做一件事,而您并没有这样做。因此,childVC
(您的childController
)立即消失,这就是您所经历的nil
崩溃的原因
顺便说一句,另一个可能的原因是,如果您的childController
是在情节提要中设计的,childController()
是错误的实例化方式-情节提要中的表视图永远不会存在。您必须确保视图控制器的视图是您设计的视图