tableView dataSource在编译时但在运行时不可用

时间:2015-12-19 06:07:51

标签: ios swift uitableview

在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 的函数永远不会被调用。

在这种情况下需要做些什么?

谢谢

0 个答案:

没有答案