在ContainerView中使用UITableView和一个Prototype单元格。该表将需要提供单元格,以便在运行时,代码将在不同的单元格中添加不同的视图以供用户信息和交互。 tableView和containerView.swift之间的连接是它的dataSource和delegate。
在containerView.swift中,UIViewController已被扩展。
extension myContainerView: UITableViewDataSource, UITableViewDelegate {...}
在该代码块中,需要func返回 numberOfRowsInSection 和 cellForRowAtIndexPath
但是这些信息在运行时可用,因此我的代码现在不符合,当达到return parent.mainTbRowCount()
时我得到以下错误,如果我现在只返回一个虚拟int,我得到相同的错误到达 let view = parent.cellsViewsDesider.views![indexPath.row]
时
致命错误:在解包可选值时意外发现nil
extension myContainer: UITableViewDataSource, UITableViewDelegate {
func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return parent.mainTbRowCount() // <------ fatal error
}
func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCellWithIdentifier("topCellId", forIndexPath: indexPath)
let view = parent.cellsViewsDesider.views![indexPath.row] // <---- fatal error
cell.contentView.addSubview(view!)
return cell
}
如果我删除tableView和containerView.swift之间的连接作为其dataSource和委托,代码将编译,但 numberOfRowsInSection和cellForRowAtIndexPath 的函数永远不会被调用。
在这种情况下需要做些什么?
谢谢