我有一个自定义的TableViewCell。在单元格中,我将两个交叉图标(使用unicode)添加到单元格的两侧。当用户平移单元格时,它将在侧面显示十字图标。
- (id)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier
{
self = [super initWithStyle:style reuseIdentifier:reuseIdentifier];
if (self) {
// add a cross
_crossLabel = [self createCueLabel];
_crossLabel.text = @"\u274C";
_crossLabel.textAlignment = NSTextAlignmentLeft;
// none of the following code works
[self insertSubview:_crossLabel aboveSubview:self];
[self insertSubview:_crossLabel belowSubview:self];
[self addSubview:_crossLabel];
_crossLabel2 = [self createCueLabel];
_crossLabel2.text = @"\u274C";
_crossLabel2.textAlignment = NSTextAlignmentLeft;
[self addSubview:_crossLabel2];
// add a pan recognizer
UIGestureRecognizer* recognizer = [[UIPanGestureRecognizer alloc] initWithTarget:self action:@selector(handlePan:)];
recognizer.delegate = self;
[self addGestureRecognizer:recognizer];
}
return self;
}
我使用上面的代码来实现这一点。并且_crossLabel确实添加了Custom TableView Cell。
我使用Reveal App来检查我的iOS应用的布局 我可以看到_crossLabel已添加到我的Cell中。但我在iOS 7模拟器中看不到十字图标。我尝试了不同的方法来添加subView,但它们都不起作用。
但它在iOS6上完美运行,当我在Reveal App中检查时,布局与iOS 7完全相同。
感谢您的帮助。
答案 0 :(得分:11)
确保添加到单元格的contentView,[self.contentView addSubView:_crossLabel2];
而不是单元格本身。
您将看到使用Reveal并检查iOS7时,在UITableViewCell UIKit中添加/滑入了单元格视图上方的UITableViewCellSCrollView,因此请小心insertSubview:belowSubview
次调用。
另外,从显示的OutlineView的屏幕截图中,“LocationCell”视图显示为灰色,这意味着它是隐藏的。
修改仅供将来参考:
在iOS 7中,新的UITableViewCellScrollView具有“clipToBounds”属性集。这是一个黑客,但如果你[self.contentView.superview setClipsToBounds:NO]。 superview是iOS7上的UITableViewCellScrollView和iOS6上的单元本身
答案 1 :(得分:-1)
无需添加单元格内容视图。您只需使用
访问iOS 7中的子视图[[cell.subviews lastObject] subviews]