带有 xib 文件和自定义构造函数的自定义 UITableViewCell

Posted

技术标签:

【中文标题】带有 xib 文件和自定义构造函数的自定义 UITableViewCell【英文标题】:Custom UITableViewCell with xib file and custom constructor 【发布时间】:2013-10-22 20:03:46 【问题描述】:

关于自定义 UITableViewCell 的一个问题。

我想要一个带有 xib 文件的 UICustomTableViewCell 来设计这个单元格。

当我创建我的单元格时,我还会使用自定义构造函数来传递一些参数。例如:

initWithMyParamterA:(NSString*) aParameterA andParameterB:(NSString*) aParameterB;

我不希望使用属性来传递这个参数。

那么,我怎样才能同时实现这个构造函数loadNibName(加载xib文件)和默认构造函数:

initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier

如何混合这些? :)

【问题讨论】:

【参考方案1】:

我已经通过一个类别扩展了 UIView 类,并添加了一个使用类名创建 XIB 的方法

+ (id) viewWithDefaultXib

    NSArray *topLevelObjects = [[NSBundle mainBundle] loadNibNamed:NSStringFromClass([self class]) owner:self options:nil];
return [topLevelObjects count] ? [topLevelObjects objectAtIndex:0] : nil;

您可以在类中定义以下方法来初始化对象。 - (id) initWithCoder:(NSCoder *)aCoder 更多信息https://developer.apple.com/library/ios/documentation/cocoa/reference/foundation/Protocols/NSCoding_Protocol/Reference/Reference.html

【讨论】:

【参考方案2】:

从 xib 未归档的视图将始终使用 initWithCoder: 进行初始化,您必须重写该方法才能从 nib 初始化自定义视图。

Nib file docs

【讨论】:

以上是关于带有 xib 文件和自定义构造函数的自定义 UITableViewCell的主要内容,如果未能解决你的问题,请参考以下文章

约束不适用于视图和自定义 xib 文件

Swift - 带有 xib 文件的自定义视图,IBOutlet 为 nil

使用 xib 和 tableView 的多个视图

从 XIB 加载的 UITableView Sectionheader 有时显示不正确

从 UWP 中的自定义 ToolTip 和自定义 Flyout 类取消订阅事件

带有 XIB 的自定义 UITableViewCell