我为我的应用程序创建一个设置视图,并在该视图中是一个UITableView。我正在创建自定义单元格来满足我的需求,但是我遇到了问题 - 只有最后一个单元格获得[layoutSubviews]
。难道我做错了什么?自定义单元格,只有最后一个单元格获取[layoutSubviews]?
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
//int type = (indexPath.row == 0?1:0);
//if(indexPath.row == 6) type = 2;
NSLog(@"row %i created", indexPath.row);
TableCell *cell = [[TableCell alloc] initWithType:indexPath.row];
cell.textLabel.text = @"Test cell";
return cell;
}
在我的自定义单元格:
@implementation TableCell
UIImageView *shadowView;
int row;
- (id) initWithType:(int)type {
row = type;
self = [super initWithStyle:UITableViewCellStyleDefault reuseIdentifier:nil];
self.backgroundColor = [UIColor clearColor];
self.backgroundView = [[UIView alloc] init];
UIImage *shadowImage = [UIImage imageNamed:@"CellShadow"];
shadowImage = [shadowImage resizableImageWithCapInsets:UIEdgeInsetsMake(14, 14, 14, 14)];
shadowView = [[UIImageView alloc] initWithImage:shadowImage];
[self.contentView addSubview:shadowView];
//[self.contentView sendSubviewToBack:shadowView];
NSLog(@"agreed, row %i created", row);
[self layoutSubviews];
return self;
}
- (void) layoutSubviews {
NSLog(@"row: %i", row);
[super layoutSubviews];
shadowView.frame = CGRectMake(
0, 0,
self.contentView.frame.size.width,
self.contentView.frame.size.height
);
}
@end
不断,只有最后一个单元格#6,据报道,当我旋转,或当layoutSubviews应该叫。有什么建议么?
谢谢你的详细解答。但即使使用[self setNeedsLayout],而不是直接调用layoutSubviews,只有最后一行在旋转视图时才会获取layoutSubviews。 – mattsven 2013-05-07 17:44:17
我应该更仔细地阅读你的代码。 (布局子视图错误超过了我的注意力,这些应该肯定会被删除)。我编辑了答案。首先获得正确构建的单元格,布局应该可以正常工作。如果没有,在旋转时尝试tableView reloadData,但你不应该需要它。 – danh 2013-05-07 19:37:11
我没有使用可重复使用的单元格,因为这将是一个设置视图,并且它是少量的单元格。不管如何,它似乎都不起作用。 – mattsven 2013-05-07 22:12:45