我正在为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中正确地重新加载数据?
请快速回答。
答案 0 :(得分:1)
好的,我终于解决了这些问题:
未声明类型的第一个错误....我花了好几个小时.....所有需要的东西,就是重新启动xcode。当我读到有类似问题的人时,我无法相信。 错误在xcode中以红色显示,但该项目仍然可以构建并运行且没有错误这一事实是可疑的.... xcode中代码部分的颜色也是错误的......无论如何,某些东西被破坏了重新启动xcode修复它。
第二个错误,重新加载表视图: 我只是为tableview创建了一个iboutlet,然后在后端工作后在viewdidload中调用它来检索数据。再一次,有一个腐败的地方,我无法将tableview从stroyboard ctrl +拖动到文件中:我必须键入插座,然后链接它,它工作,而不是相反的方式。因此,我不是调用tableView.reloadData()而是调用userFriendsTableView.reloadData(),userFriendsTableView是自定义插座的名称,现在一切正常。