gpt4 book ai didi

ios - 静态 UITableView Cell 属性修改

转载 作者:行者123 更新时间:2023-11-29 01:27:58 25 4
gpt4 key购买 nike

我的 Storyboard中有一个静态 UITableView 设置。我对一些单元格进行了子类化并添加了这个属性:

@property (nonatomic, strong) UILabel *label;

我还有在 layoutSubviews 方法中将标签添加到我的单元格的代码。我的标签毫无问题地显示在我的单元格中。我可以看到标签上写着“PLACEHOLDER”,但它没有更新为显示我在 cellForRowAtIndexPath 中设置的文本。

cellForRowAtIndexPath 方法中,我有以下内容:

APInfoTableViewCell *cell = (APInfoTableViewCell*)[super tableView:tableView cellForRowAtIndexPath:indexPath];

[cell.label setText@"Hello World"];

但是,这不会更新我标签中的文本。标签实际上是零。

编辑:

这里是完整的代码...

UITableViewCell 子类:

@property (nonatomic, strong) UILabel *infoLabel;

-(void)layoutSubviews
{
[super layoutSubviews];

[self initUI];
}

-(void)initUI
{
//add long press to show info label
_infoLabel = [UILabel new];
[_infoLabel setText:@"PLACEHOLDER"];
[_infoLabel setFont:[UIFont fontWithName:@"Avenir-Medium" size:10.0f]];
[_infoLabel setTextAlignment:NSTextAlignmentCenter];
[_infoLabel setTextColor:[UIColor apText]];
[_infoLabel setAlpha:1.0f];
[_infoLabel setTranslatesAutoresizingMaskIntoConstraints:NO];
[self addSubview:_infoLabel];

NSArray *infoConstraintH = [NSLayoutConstraint constraintsWithVisualFormat:@"H:|-40-[infoLbl]-40-|" options:0 metrics:nil views:@{ @"infoLbl" : _infoLabel }];
[self addConstraints:infoConstraintH];
NSArray *infoConstraintV = [NSLayoutConstraint constraintsWithVisualFormat:@"V:|-10-[infoLbl]-10-|" options:0 metrics:nil views:@{ @"infoLbl" : _infoLabel }];
[self addConstraints:infoConstraintV];
}

View Controller :

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
APInfoTableViewCell *cell = (APInfoTableViewCell*)[super tableView:tableView cellForRowAtIndexPath:indexPath];

[cell.infoLabel setText@"Hello World"];

return cell;
}

最佳答案

如果您正在使用 Storyboard,并且您不想添加 IB socket ,则从 awakeFromNib 方法调用您的 initUI 方法。如果您不使用 Storyboard,请实现 - (instancetype)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier 方法并从那里调用它。

一旦单元格(或任何 UIView 子类)从 nib(从 Storyboard或 xib)实例化,就会调用 awakeFromNib 方法。并且它在 View 的生命周期中只被调用一次

注意:如果您以编程方式创建 View 子类,则不会调用此方法。

根据文档

Subclasses can override this method as needed to perform more precise layout of their subviews. You should override this method only if the autoresizing and constraint-based behaviors of the subviews do not offer the behavior you want. You can use your implementation to set the frame rectangles of your subviews directly.

这意味着,使用此方法可以对已添加的内容进行任何额外的布局。当某些框架/自动布局约束发生更改时调用此方法。

关于ios - 静态 UITableView Cell 属性修改,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33800938/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com