在UITableView静态单元格上,单元格始终为零

时间:2015-12-16 00:59:05

标签: ios swift uitableview

我有一个UITableViewController,其中有三个UITableViewCell静态

我想为单元格内部的一个标签创建一个插座,我无法拖放,我通过互联网阅读,人们建议执行以下操作

override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
    let cell = tableView.dequeueReusableCellWithIdentifier(CellIdentefiers.oneMenuCell.rawValue)
    let label = cell!.viewWithTag(1) as! UILabel
    label.font = UIFont(name: Constants.centuryGothic.rawValue, size: CGFloat(17))
    return cell!
}

我给了那个标签= 1

我的问题是,单元格总是为零,尽管它具有正确的标识符。请看 enter image description here

我做了什么遗失?

更新

人们要求这个

enum CellIdentefiers : String {
    case numberOfPeopleCell
    case dayCell
    case timeCell
    case preferencesCell
    case oneHistoryCell
    case oneConfirmationCell
    case oneMenuCell
}

3 个答案:

答案 0 :(得分:0)

你的枚举需要原始值,即

enum CellIdentefiers : String {
    case numberOfPeopleCell = "numberOfPeopleCell"
    case dayCell = "dayCell"
    case timeCell = "timeCell"
    case preferencesCell = "preferencesCell"
    case oneHistoryCell = "oneHistoryCell"
    case oneConfirmationCell = "oneConfirmationCell"
    case oneMenuCell = "oneMenuCell"
}

答案 1 :(得分:0)

重用标识符用于动态单元格。要在静态单元格中为标签创建插座,可以将连接IBOutlet从故事板拖到ViewController。我刚试过它,它绝对有用。

编辑:这是一张图片,证明您可以将IBOutlets连接到静态单元格标签。

enter image description here

答案 2 :(得分:0)

你需要在viewDidLoad中专门为一个给定的标识符注册一个单元格:

self.tableView.registerClass(UITableViewCell.self, forCellReuseIdentifier: "cellIdentifier")

在你的情况下,你会做类似的事情:

self.tableView.registerClass(UITableViewCell.self, forCellReuseIdentifier: CellIdentefiers.oneMenuCell.rawValue)

当你在cellForRowAtIndexPath中访问它时,你需要在dequeueReusableCellWithIdentifier中访问该标识符“cellIdentifier”:

 let cell = tableView.dequeueReusableCellWithIdentifier("cellIdentifier")

在你的情况下,你正是这样做的:

let cell = tableView.dequeueReusableCellWithIdentifier(CellIdentefiers.oneMenuCell.rawValue)

问题是这些步骤通常在您使用“自定义”单元格时完成。如果您不想使用自定义单元格,只需在cellForRowAtIndexPath中执行以下操作:

let cellIdentifier = "Cell"
var cell = tableView.dequeueReusableCellWithIdentifier(cellIdentifier)
if(cel == nil){
    cell = UITableViewCell(style: UITableViewCellStyle.Default, reuseIdentifier: cellIdentifier)
}

最后,@ MikeAtNobel是正确的。您需要从枚举而不是int值提供String值。因此,他提出的改变似乎是有效和正确的。