내 앱의 설정보기를 만들고 해당보기에서 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, I는 회전하거나 layoutSubviews가 호출되어야 할 때 때보고됩니다. 어떤 제안?
자세한 답변 해 주셔서 감사합니다. 그러나 layoutSubviews에 대한 직접 호출이 아닌 [self setNeedsLayout]을 사용해도보기가 회전 될 때 마지막 행만 layoutSubviews를 가져옵니다. – mattsven
코드를 더 자세히 읽어야합니다. (레이아웃 subviews 실수가 내 관심을 추월했다. 그 반드시 제거해야합니다). 나는 대답을 편집했다. 먼저 제대로 구축 된 셀을 가져 오면 레이아웃이 잘 작동합니다. 그렇지 않다면, 회전시 tableView reloadData를 시도하십시오. 그러나 필요하지 않습니다. – danh
재사용 가능한 셀을 사용하고 있지 않습니다. 설정보기가 될 것이고 셀 수가 적기 때문입니다. 그리고 그것은 상관없이 작동하지 않는 것 같습니다. – mattsven