无法在iOS7上看到动态子视图(在iOS6上工作)

时间:2013-09-16 01:53:58

标签: ios objective-c uitableview ios7 addsubview

我有一个自定义的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应用的布局 enter image description here 我可以看到_crossLabel已添加到我的Cell中。但我在iOS 7模拟器中看不到十字图标。我尝试了不同的方法来添加subView,但它们都不起作用。

enter image description here

但它在iOS6上完美运行,当我在Reveal App中检查时,布局与iOS 7完全相同。

感谢您的帮助。

2 个答案:

答案 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]