在iOS5.0中,如何使用UINibs来实例化和使用表视图的UITableViewCell。我知道在iOS5.0中也需要使用一个registerNib:forCellReuseIdentifier:,但不确定如何使用它
事先感谢你在这方面的帮助
发布于 2012-05-10 20:24:41
步骤2和步骤3可以组合在一起,因此您可以在viewDidLoad中使用以下行:
[self.tableView registerNib:[UINib nibWithNibName:@"Cell" bundle:nil] forCellReuseIdentifier:@"Cell"];然后,在cellForRowAtIndexPath中,如果您想要nib中的一个信元,则将其出列:
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"Cell"];这要么从nib创建一个新实例,要么使现有单元出列。
发布于 2012-12-14 23:40:14
@jrturton的答案是正确的,但不幸的是,iOS 5(已在iOS 6中修复)与VoiceOver:rdar://11549999结合使用时存在错误。UITableView上的以下类别可以解决此问题。只需使用-fixedDequeueReusableCellWithIdentifier:而不是普通的dequeueReusableCellWithIdentifier:。当然,NIB必须使用
[self.tableView registerNib:[UINib nibWithNibName:@"Cell" bundle:nil] forCellReuseIdentifier:@"Cell"];之前(在-viewDidLoad中)。
UITableView+Workaround.m:
@implementation UITableView (Workaround)
- (id)fixedDequeueReusableCellWithIdentifier:(NSString *)identifier {
id cell = [self dequeueReusableCellWithIdentifier:identifier];
if (!cell) {
// fix for rdar://11549999 (registerNib… fails on iOS 5 if VoiceOver is enabled)
cell = [[[NSBundle mainBundle] loadNibNamed:identifier owner:self options:nil] objectAtIndex:0];
}
return cell;
}
@endhttps://stackoverflow.com/questions/10527377
复制相似问题