tableview自定义单元格:使用未声明的类型

时间:2014-11-26 13:11:39

标签: ios uitableview swift

我正在为tableview设置自定义单元格,除了一些恼人的错误外,它几乎正常工作。所以我在故事板中设置了一个带有标识符的原型单元格:RankingCell和class:RankingCell。

我设置了一个非常基本的类文件:RankingCell.swift

import Foundation
import UIKit


 class RankingCell: UITableViewCell {
    @IBOutlet var firstName: UILabel!
    @IBOutlet var lastName: UILabel!
}

出口正确链接到自定义单元格内的字段。 现在这里是视图控制器文件:

class RankingViewController: UIViewController, UITableViewDelegate {

    var testArray = ["Ben", "rob"]
    var testArray2 = ["mel", "duval"]


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

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

        let cell = tableView.dequeueReusableCellWithIdentifier("RankingCell") as RankingCell //Error I here

        cell.firstName.text = testArray[indexPath.row]
        cell.lastName.text = testArray2[indexPath.row]

        return cell
    }

    override func viewDidLoad() {
    super.viewDidLoad()
    tableView.reloadData() //Error II here


    }

}

编译器概述的错误是“使用未声明的类型'RankingCell'”。奇怪的是,当我编译时,它编译没有任何问题,甚至在单元格中显示正确的数据。我仍然宁愿做正确的事情,也不愿意接受概述的错误。

第二个错误是在viewdidload中。我简化了示例中的代码,但是我从后端提取数据,一旦我拥有它,我需要重新加载表,所以我把tableView.reloadData()放在那里触发错误:“(UITableView,numberOfRowsInSection:Int) - > Int'没有名为'reloadData'的成员“。因此,我无法使用适当的数据重新加载表。也许您知道如何从viewdidload中正确地重新加载数据?

请快速回答。

1 个答案:

答案 0 :(得分:1)

好的,我终于解决了这些问题:

未声明类型的第一个错误....我花了好几个小时.....所有需要的东西,就是重新启动xcode。当我读到有类似问题的人时,我无法相信。 错误在xcode中以红色显示,但该项目仍然可以构建并运行且没有错误这一事实是可疑的.... xcode中代码部分的颜色也是错误的......无论如何,某些东西被破坏了重新启动xcode修复它。

第二个错误,重新加载表视图: 我只是为tableview创建了一个iboutlet,然后在后端工作后在viewdidload中调用它来检索数据。再一次,有一个腐败的地方,我无法将tableview从stroyboard ctrl +拖动到文件中:我必须键入插座,然后链接它,它工作,而不是相反的方式。因此,我不是调用tableView.reloadData()而是调用userFriendsTableView.reloadData(),userFriendsTableView是自定义插座的名称,现在一切正常。