让SIGABRT尝试填充表格视图

时间:2018-03-28 08:27:06

标签: ios swift xcode

我有一个表格视图,我需要填充动态数据。

我以前是在一个单独的控制器中做过的,只是复制了所有内容。

但是,这次我不断收到SIGABRT错误。 我发现只要我将这两行包含在内,就会出错

//  editJobTable.dataSource = self
//  editJobTable.delegate = self

这是我的全视图控制器

import Foundation
import UIKit

class HelloworkJobsEditJobViewController: UIViewController{
    fileprivate var presenter: HelloworkJobsEditJobPresenter?

    @IBOutlet weak var editJobTable: UITableView!

    func inject(presenter: HelloworkJobsEditJobPresenter) {
        self.presenter = presenter
    }

    var helloworkJob: HelloworkJob!

    override func viewDidLoad(){
        super.viewDidLoad()
        helloworkJob = presenter?.getHelloworkJob()
        editJobTable.dataSource = self
        editJobTable.delegate = self
//        editJobTable.reloadData()
    }

    @IBAction func tapCloseButton(_ sender: Any) {
        self.dismiss(animated: true, completion: nil)
    }
}

extension HelloworkJobsEditJobViewController: UITableViewDataSource {

    func numberOfSections(in tableView: UITableView) -> Int {
        return 1
    }

    func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int{
        return 7
    }

    func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
        print("\(#line): \(#function) \(indexPath.row)")
        let cellIdentifier = "HelloworkJobsEditJobCell"

        guard let cell = tableView.dequeueReusableCell(withIdentifier: cellIdentifier, for: indexPath) as? HelloworkJobsEditJobCell else {
            fatalError("The dequeued cell is not an instance of HelloworkJobsEditJobCell.")
        }

        cell.cellLabel.text = "labeltest"
        cell.cellTextField.text = "textfieldtest"
        return cell
    }
}

extension HelloworkJobsEditJobViewController: UITableViewDelegate {
}

非常感谢任何有关它可能引发此错误的想法。

2 个答案:

答案 0 :(得分:3)

您必须使用单元格自定义类

注册tableView
tableView.register(UINib(nibName: "engineTableViewCell", bundle: nil), forCellReuseIdentifier:"cellID")

或者

tableView.register(engineTableViewCell.self, forCellReuseIdentifier: "cellID")

答案 1 :(得分:2)

像这样使用:

extension HelloworkJobsEditJobViewController: UITableViewDelegate {

func numberOfSections(in tableView: UITableView) -> Int {
        return 1
    }

    func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int{
        return 7
    }
}

extension HelloworkJobsEditJobViewController: UITableViewDataSource {

    func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
        print("\(#line): \(#function) \(indexPath.row)")
        let cellIdentifier = "HelloworkJobsEditJobCell"

        guard let cell = tableView.dequeueReusableCell(withIdentifier: cellIdentifier, for: indexPath) as? HelloworkJobsEditJobCell else {
            fatalError("The dequeued cell is not an instance of HelloworkJobsEditJobCell.")
        }

        cell.cellLabel.text = "labeltest"
        cell.cellTextField.text = "textfieldtest"
        return cell
    }
}