我处于需要创建自定义表格单元格的情况。我已经将UITableViewCell子类化了:
@interface CustomTableViewCell : UITableViewCell
@property (weak, nonatomic) IBOutlet UIImageView *icon;
@property (weak, nonatomic) IBOutlet UILabel *name;
@property (weak, nonatomic) IBOutlet UILabel *timestamp;
@property (weak, nonatomic) IBOutlet UILabel *email;
@property (weak, nonatomic) IBOutlet UILabel *phone;
...
始终需要图标,名称和时间戳。电子邮件和电话是可选标签。我最初只是隐藏了“可选”标签,但这并没有消除他们占用的空间。所以我正在考虑以编程方式构建这个tableviewcell。
2件事:
我无法找到以编程方式构建此限制的任何地方,所以我很难知道如何开始。
我已经在IB中创建了一些,即因为图像,名称和时间戳总是在那里,我想也许这会更好地放入IB。然后只需在名称和时间戳下面构建其他标签:
我尝试创建一个新的initMethod:
- (id)initWithUser:(User *) user {
self = [super initWithStyle:UITableViewCellStyleDefault reuseIdentifier:@"userCell"];
if (self) {
// configure required stuff
[self.icon setImage:[PersonImage imageForTimestamp:user.timestamp]];
self.name.text = user.name;
self.timestamp.text = user.timestamp;
if (user.email != nil) {
//add email label with constraint tied to timestamp
}
if (user.phone != nil) {
//add phone label with constraint tied to timestamp or email
}
}
return self;
}
我在IB中将标识符设置为userCell。但它似乎没有我要求的标签。我可以这样做吗?这是个好主意吗?如何使用正确的位置创建标签?
答案 0 :(得分:0)
您的部分问题是表格视图中的单元格每次都不是init
d。它们被出列以便每次都节省创建新单元的开销。您将自定义您在-tableView:cellForRowAtIndexPath:
中重新分类的单元格的数据。