class ChecklistViewController没有初始化器?

时间:2015-08-03 12:32:05

标签: ios iphone xcode swift

当我尝试运行我的应用程序时,突然显示类的错误没有初始化程序。告诉我他们是否有任何代码问题或变量声明问题。任何人都可以告诉我这个错误背后的原因。

import UIKit
class ChecklistViewController: UITableViewController {

    var row0item: ChecklistItem
    var row1item: ChecklistItem
    var row2item: ChecklistItem
    var row3item: ChecklistItem
    var row4item: ChecklistItem

    override func tableView(tableView: UITableView, numberOfRowsInSection section: Int) - > Int

    {
        return 5

    }

    override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) - > UITableViewCell

    {
        let cell = tableView.dequeueReusableCellWithIdentifier("ChecklistItem")

        let label = cell!.viewWithTag(1000) as!UILabel



        if indexPath.row == 0 {

            label.text = row0item.text

        } else if indexPath.row == 1 {

            label.text = row1item.text

        } else if indexPath.row == 2 {

            label.text = row2item.text

        } else if indexPath.row == 3 {

            label.text = row3item.text

        } else if indexPath.row == 4 {

            label.text = row4item.text

        }

        configureCheckmarkForCell(cell!, indexPath: indexPath)

        return cell!
    }

    override func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {


        if let cell = tableView.cellForRowAtIndexPath(indexPath) {


            if indexPath.row == 0 {
                row0item.checked = !row0item.checked

            } else if indexPath.row == 1 {
                row1item.checked = !row1item.checked

            } else if indexPath.row == 2 {
                row2item.checked = !row2item.checked

            } else if indexPath.row == 3 {
                row3item.checked = !row3item.checked
            } else if indexPath.row == 4 {
                row4item.checked = !row4item.checked

            }
            configureCheckmarkForCell(cell, indexPath: indexPath)

        }
        tableView.deselectRowAtIndexPath(indexPath, animated: true)

    }

    override func viewDidLoad() {
        super.viewDidLoad()

    }

    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()

    }

    func configureCheckmarkForCell(cell: UITableViewCell, indexPath: NSIndexPath) {

        var isChecked = false

        if indexPath.row == 0 {

            isChecked = row0item.checked
        } else if indexPath.row == 1 {

            isChecked = row1item.checked
        } else if indexPath.row == 2 {

            isChecked = row2item.checked
        } else if indexPath.row == 3 {

            isChecked = row3item.checked
        } else if indexPath.row == 4 {

            isChecked = row4item.checked
        }

        if isChecked {

            cell.accessoryType = .Checkmark
        } else {

            cell.accessoryType = .None
        }
    }

}

1 个答案:

答案 0 :(得分:0)

是的,您的变量声明存在问题。 如果您将变量声明为不可选(如您所做),则必须在覆盖init()中初始化它们。 如果将它们声明为可选项,则无需初始化它们:

var row0item: ChecklistItem?
var row1item: ChecklistItem?
var row2item: ChecklistItem?
var row3item: ChecklistItem?
var row4item: ChecklistItem?

访问行项目:

row0item!.aPropertyOrFunction