ios - 如何正确子类化现有行
问题描述
我需要帮助正确地对现有行进行子类化,因此我只能更改 UI,而不是函数。我想要子类化的行类型是 TextRow。
同样,我只想更改UI而不是功能。
Eurek在这里提到了一种方法,但我似乎无法找出正确的方法。我想形成这样的行。
根据Eureka的步骤:
使用同一行子分类单元格
有时我们想要更改其中一行的 UI 外观,但不更改行类型和与一行关联的所有逻辑。如果您使用从 nib 文件实例化的单元格,目前有一种方法可以做到这一点。目前,Eureka 的核心行都不是从 nib 文件中实例化的,但 EurekaCommunity 中的一些自定义行是实例化的,特别是移到那里的 PostalAddressRow。
你要做的是:
- 创建一个包含要创建的单元格的 nib 文件。
- 然后将单元格的类设置为您要修改的现有单元格(如果您想更改除了纯 UI 之外的更多内容,那么您应该对该单元格进行子类化)。确保该类的模块设置正确
- 将插座连接到您的班级
告诉您的行使用新的 nib 文件。这是通过设置 cellProvider 变量来使用这个笔尖来完成的。您应该在初始化程序中执行此操作,无论是在每个具体实例化中还是使用 defaultRowInitializer。例如:
<<< PostalAddressRow() { $0.cellProvider = CellProvider(nibName: "CustomNib", bundle: Bundle.main) }
您也可以为此创建一个新行。在这种情况下,尝试从与要更改的行相同的超类继承以继承其逻辑。
执行此操作时需要考虑一些事项:
如果您想查看示例,请查看 PostalAddressRow 或 CreditCardRow,它们在示例中使用了自定义 nib 文件。如果您收到错误Unknown class <YOUR_CLASS_NAME> in Interface Builder file
提示,可能是您必须在代码中的某处实例化该新类型才能在运行时加载它。调用 let t = YourClass.self 对我有帮助。
基本上我需要帮助的是设置正确的 xib/nib 和类以在表单中使用。谢谢你。
解决方案
推荐阅读
- mongodb - 如何在 dokku 中设置 mongo 副本集?
- java - 媒体录音机 - Android Java 通话录音接收方声音太低
- anylogic - AnyLogic 教程示例不适合我
- html - 为什么我的图像没有出现在另一个 div 中的 div 中?
- flutter - 无法下载 ddmlib.jar (com.android.tools.ddms:ddmlib:26.1.2)
- jquery - Jquery一次移动单个元素
- c# - .NET Core 2.1 HttpClient 不返回预期值
- python - 使用 FastCGI 在 IIS 中部署 Python Web 应用程序(Flask)得到 500 内部服务器错误
- postgresql - 具有多个唯一约束的 Postgresql UPSERT
- ajax - 使用 ajax/codeigniter 调用 url 时出现错误 404