我正在为 tableview 设置自定义单元格,除了一些烦人的错误外,它几乎可以正常工作。所以我在 Storyboard中设置了一个原型(prototype)单元格,标识符为:RankingCell 和类:RankingCell。
我设置了一个非常基本的类文件:RankingCell.swift
import Foundation
import UIKit
class RankingCell: UITableViewCell {
@IBOutlet var firstName: UILabel!
@IBOutlet var lastName: UILabel!
}
导出已正确链接到自定义单元格内的字段。 现在这是 View Controller 文件:
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 正确地重新加载数据?
请 swift 回答。
最佳答案
好的,我终于解决了问题:
第一个未声明类型的错误……我花了好几个小时……我所需要的只是重新启动 xcode。当我读到有类似问题的人时,我简直不敢相信。 错误在 xcode 中显示为红色,但项目仍然可以无错误地构建和运行这一事实是可疑的......而且 xcode 中那部分代码的颜色是错误的......无论如何有些东西已经损坏并且重新启动 xcode 修复它。
第二个错误,重新加载 TableView : 我只是为tableview创建了一个iboutlet,然后在后端工作后在viewdidload中调用它来检索数据。同样,我无法按 ctrl+将 tableview 从 stroyboard 拖动到文件中,这是一个损坏:我必须键入 socket ,然后链接它并且它起作用,而不是相反。因此,我没有调用 tableView.reloadData(),而是调用了 userFriendsTableView.reloadData(),userFriendsTableView 是自定义导出的名称,现在一切正常。
关于ios - tableview 自定义单元格 : use of undeclared type,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27150154/