gpt4 book ai didi

ios - Swift TableViewController reuseIdentifier 从不工作

转载 作者:搜寻专家 更新时间:2023-11-01 05:42:27 29 4
gpt4 key购买 nike

我在 Swift 中使用一个 TableViewController 和一个原型(prototype)单元格。该单元有一个在 Storyboard 中指定的重用标识符,但它永远不会正确出列。我总是收到“在展开可选值时意外发现 nil”错误。

我已经按如下方式正确注册了类(class):

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

违规代码是:

override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell
{
let cell = tableView.dequeueReusableCellWithIdentifier("myNewCell") as UITableViewCell

let textField = cell.viewWithTag(123) as UITextField
textField.text = "test"

return cell
}

我觉得我已经尝试了这里的所有方法,但它从来没有正确地给出具有该标识符的单元格。即使使用回退(如果为 nil,则使用该标识符创建一个单元格)仍然会出现错误。获取具有该标识符的单元格肯定有问题,但它已在 Storyboard中注册和指定......非常感谢任何帮助!

最佳答案

当使用单元格原型(prototype)时,您不调用 registerClass。 Storyboard会为你做到这一点。如果单元格原型(prototype)指定了标识符,那么只需所有 dequeueReusableCellWithIdentifier 并且它应该可以顺利找到您的单元格原型(prototype)。

我建议检查 Storyboard中标识符的拼写/大小写,并确保它与 cellForRowAtIndexPath 代码中使用的相同。


我注意到您正在尝试使用标签号访问单元格的标签。如今,在处理自定义单元格布局时,我们通常会创建自己的 TableView 子类,例如:

//  CustomTableViewCell.swift

import UIKit

class CustomTableViewCell: UITableViewCell {

@IBOutlet weak var customTextField: UITextField! // note, I would use something other than textLabel to avoid confusion with base class

}

然后我们将转到我们的单元原型(prototype)并指定其基类:

cell base class

我们还会设置单元格原型(prototype)的标识符:

enter image description here

然后我们将连接单元格原型(prototype)和我们的自定义类 @IBOutlet 之间的导出。

完成所有这些后,cellForRowAtIndexPath 将是:

override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCellWithIdentifier("myNewCell", forIndexPath: indexPath) as CustomTableViewCell

cell.customTextField.text = "Row \(indexPath.row)"

return cell
}

关于ios - Swift TableViewController reuseIdentifier 从不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26679554/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com