【问题标题】:How to add an UIView to a table cell in objective-c?如何将 UIView 添加到 Objective-C 中的表格单元格?
【发布时间】:2015-12-29 02:53:50
【问题描述】:

我有一个有 2 行的 tableview。在第一行中,我有一个 UIView,我将在其上添加一个自定义视图。我将自定义视图作为 XIB 进行了添加,如下所示,

Layout6View *lookLayout6 = [[Layout6View alloc] initWithFrame:CGRectMake(0, 0,cell.mainView.frame.size.width, cell.mainView.frame.size.height)];
[cell.mainView addSubview:lookLayout6];

我的Layout6View 看起来像,

@implementation KCTLLookLayout6View

- (id)initWithFrame:(CGRect)frame {
    self = [super initWithFrame:frame];
    if (self) {
        self = [[[NSBundle mainBundle] loadNibNamed:@"Layout6"
                                          owner:self
                                        options:nil] lastObject];
        self.frame = frame;

    }

    return self;
}

-(void)layoutSubviews{
    [super layoutSubviews];

    for (UIView *view in self.subviews) {
        if (view == self.imageTopRightCorner) {
            view.frame = CGRectOffset(CGRectMake(0, 0, /*(self.frame.size.width/2)-20, (self.frame.size.height/3)*/30,30), 0, 0);
        }
    }
}
@end

当我运行它时,自定义视图没有调整大小。它遍布整个表格视图(不仅在单元格内部)。

有没有办法解决这个问题?

【问题讨论】:

  • 在 cell.contentView 上添加子视图,或者如果您使用故事板进行设计,请直接添加。
  • 如果可能的话,更喜欢故事板上的原型单元。每当您在单元格中使用“添加子视图”时,每当单元格重用时,它将再次创建并重叠多次重用单元格。因此,您必须通过迭代子视图来删除该视图,然后再次执行子视图。

标签: ios objective-c iphone uitableview uiview


【解决方案1】:

试试:

[cell.contentView addSubview:lookLayout6];

【讨论】:

  • 你说你在XIB文件中定义Layout6View ?但是你为什么不从 XIB 加载它呢?您必须从 XIB 加载它。
  • 试试这个Layout6View *lookLayout6 = [[Layout6View alloc] initWithNibName:@"YourNIB" bundle:nil];
【解决方案2】:

更改 xib 视图的 Size 属性。默认为 Inferred,使其为 Freeform 并检查。

【讨论】:

  • 我改了。但面临同样的问题。
猜你喜欢
  • 1970-01-01
  • 2012-05-12
  • 2018-04-09
  • 1970-01-01
  • 1970-01-01
  • 2021-06-04
  • 2015-12-16
  • 1970-01-01
  • 2018-07-02
相关资源
最近更新 更多