我有一个带有表视图的视图控制器,需要将其作为子视图添加到另一个视图控制器,但是当我添加视图控制器的视图时,我得到一个指向该表的零。所有的连接都存在,但无法解决它崩溃的原因。
儿童控制器
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)
}
答案 0 :(得分:1)
此代码完全违法:
func presentChildController() {
let childVC = childController()
self.view.addSubview(childVC.view)
}
您不能简单地创建一个视图控制器,抓取它的视图,并将其视图填充到您自己的视图中。如果您希望视图控制器(self
)充当父视图控制器,并且childController
充当子视图控制器,则有careful dance你必须这样做 - 而你不是那种舞蹈。因此,childVC
(您的childController
)会立即失效,这就是您遇到的nil
崩溃的原因。
顺便说一句,另一个可能的原因是,如果你的childController
是在故事板中设计的,childController()
是错误的实例化方法 - 故事板中的表格视图永远不会存在。您必须确保视图控制器的视图是您设计的视图。