带有 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的主要内容,如果未能解决你的问题,请参考以下文章
Swift - 带有 xib 文件的自定义视图,IBOutlet 为 nil
从 XIB 加载的 UITableView Sectionheader 有时显示不正确