- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我在 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)并指定其基类:
我们还会设置单元格原型(prototype)的标识符:
然后我们将连接单元格原型(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/
想知道以下代码中 if (self = [super ... 的意义是什么?它试图防止什么情况发生? - (id)initWithFrame:(CGRect)frame reuseIdentifier
- (id)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier 上述构造函数中的
我正在尝试获取单元格的重用标识符,以便我可以像这样设置其高度: 但是出现错误: 我做错了什么? 最佳答案 tableView heightForRowAtIndexPath 在cellForRowAt
我创建了两个不同的单元格以在其中显示不同的数据。我为它们分配了 reuseIdentifier("TableCell" 和 "FixtureCell")。他们有两个不同的类,名为 FixtureTab
我已经为 UITableView 创建了一个扩展,并希望在运行时获得正确的 reuseIdentifier,但我不能: extension UITableView { func dequeueReus
我想使用 UITableviewCell 重用,我有一个自定义的 UITableViewCell 和使用 ARC,我的 UITableViewCell 是不同的。我的代码是: - (UITableV
你能帮我解决这个问题吗,因为方法 initWithFrame:reuseIdentifier 已被弃用: static NSString *CellIdentifier = @”Cell”; Cust
我试图重新创建一个 Xcode 项目,但我遇到了一个错误“'initWithFrame:reuseIdentifier' is deprecated”。这是代码: - (id)initWithFram
在我的项目中,我收到了弃用警告,initWithFrame : reuseIdentifier : is deprecated 我不知道这是什么意思,谁能告诉我如何解决这个警告谢谢 这是短代码 - (
我正在创建自己的自定义 UITableViewCell 以用作原型(prototype)单元格的后端。在我的类中,我重写了 initwithstyle:reuseIdentifier: 方法来执行一些
我现在考虑这个问题很长时间了。 我尝试在我的表格中使用不同类型的单元格,每个单元格都有自己的单元格 Controller ,并有一个重用标识符和来自 NIB 的负载。 问题归结为:您可以通过 [UIT
我有一个自定义的 UICollectionViewCell,我通过像这样注册它来将它从我的 View Controller 中取出 [self.calendarView registerNib:[UI
我有一个最多包含 50 个单元格的 TableView,其中包含 5 个包含公共(public)信息(标题、描述、价格...)的 subview 和 5 个可选 subview (报价、报价过期...
如果我尝试返回默认的 UICollectionViewCell 应用程序崩溃,因为它缺少 reuseIdentifier: Terminating app due to uncaught except
我有 SIGSEGV 的崩溃报告。我认为这真的不明显,因为有: 无后台 UI 操作。 没有外部 CALayer 操作。 UITableViewCell 以编程方式初始化,不使用 xib 或 Story
据我了解,如果不期望该单元格被重用,则创建一个 reuseIdentifier 为 nil 的 UITableViewCell 是有效的,例如当该类型的单元格只有一两行时。 前几天有人提出这是不正确的
我在 Swift 中使用一个 TableViewController 和一个原型(prototype)单元格。该单元有一个在 Storyboard 中指定的重用标识符,但它永远不会正确出列。我总是收到
表格 View 单元格的重用标识符的范围是什么——它们是在一个表格 View 实例中共享,还是在所有使用相同重用标识符的表格 View 中共享? 例如,我有一个 FooTableViewControl
我已阅读 Loren's article关于为 UITableViewCell 绘制您自己的内容。但是,他使用的是一种已弃用的方法:initWithFrame:reuseIdentifier: is
据我了解,似乎有三种布局自定义表格 View 单元格的方法: 在界面生成器中。 在 layoutSubviews . 在 initWithStyle:reuseIdentifier: . 第二种方法和
我是一名优秀的程序员,十分优秀!