gpt4 book ai didi

ios - 子类化 UITableViewCell 不允许多个单元格标签

转载 作者:行者123 更新时间:2023-11-29 02:31:00 27 4
gpt4 key购买 nike

我对 UITableViewCell 进行了子类化,因为我想要一个标题和两个单独的副标题、一个价格和一个条件值,而不是一个标题和副标题。 我正在以编程方式构建表格,而不是在 Storyboard中。我这样设置子类化:

MatchCenterCell.h:

#import <UIKit/UIKit.h>

@interface MatchCenterCell : UITableViewCell

@property (strong, nonatomic) IBOutlet UILabel *PriceLabel;
@property (strong, nonatomic) IBOutlet UILabel *ConditionLabel;

@end

然后我尝试像这样使用它:

MatchCenterViewController.m:

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
// Initialize cell
static NSString *CellIdentifier = @"MatchCenterCell";
MatchCenterCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (!cell) {
// if no cell could be dequeued create a new one
cell = [[MatchCenterCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:CellIdentifier];
}

tableView.separatorColor = [UIColor clearColor];

NSDictionary *currentSectionDictionary = _matchCenterArray[indexPath.section];
NSArray *top3ArrayForSection = currentSectionDictionary[@"Top 3"];

if (top3ArrayForSection.count-1 < 1) {

// title of the item
cell.textLabel.text = @"No items found, but we'll keep a lookout for you!";
cell.textLabel.font = [UIFont systemFontOfSize:12];

// price of the item
cell.detailTextLabel.text = @"";

// image of the item
NSData *imageData = [NSData dataWithContentsOfURL:[NSURL URLWithString:@""]];
[[cell imageView] setImage:[UIImage imageWithData:imageData]];

}

else {

// title of the item
cell.textLabel.text = _matchCenterArray[indexPath.section][@"Top 3"][indexPath.row+1][@"Title"];
cell.textLabel.font = [UIFont systemFontOfSize:14];

// price of the item
cell.PriceLabel.text = [NSString stringWithFormat:@"$%@", _matchCenterArray[indexPath.section][@"Top 3"][indexPath.row+1][@"Price"]];
cell.PriceLabel.textColor = [UIColor colorWithRed:0/255.0f green:127/255.0f blue:31/255.0f alpha:1.0f];

// condition of the item
cell.ConditionLabel.text = [NSString stringWithFormat:@"$%@", _matchCenterArray[indexPath.section][@"Top 3"][indexPath.row+1][@"Item Condition"]];
cell.ConditionLabel.textColor = [UIColor colorWithRed:0/255.0f green:127/255.0f blue:31/255.0f alpha:1.0f];

// image of the item
NSData *imageData = [NSData dataWithContentsOfURL:[NSURL URLWithString:_matchCenterArray[indexPath.section][@"Top 3"][indexPath.row+1][@"Image URL"]]];
[[cell imageView] setImage:[UIImage imageWithData:imageData]];

cell.imageView.layer.masksToBounds = YES;
cell.imageView.layer.cornerRadius = 2.5;

}

return cell;

}

但是,每个单元格中仅显示商品的标题和图像,而不会显示 PriceLabelConditionLabel。我是否错误地对其进行了子类化?

最佳答案

希望这对你有更多帮助

如果您为 MatchCenterCell 制作 xib 文件

而不是这个

cell = [[MatchCenterCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:CellIdentifier];---------- (1)

你应该使用

cell = (MatchCenterCell *) [[[NSBundle mainBundle] loadNibNamed:@"MatchCenterCell" owner:self options:nil] lastObject]; -------- (2)

并使用 cell.PriceLabel.text = @"text" 代替 cell.textLabel.text

已编辑

您正在以编程方式完成所有操作,然后像您已经在做的那样使用 (1),-> 首先检查你是否对单元格元素(标签和图像)进行了 alloc-init

--- 你的 UITableViewCell 子类 -----

- (id)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier
{
self = [super initWithStyle:style reuseIdentifier:reuseIdentifier];
if (self) {

self.PriceLabel = [[ UILabel alloc]initWithFrame:CGRectMake(10, 10, 30, 40)];

}
return self;
}

---你的tableview委托(delegate)方法--------

{
.....

cell.PriceLabel.text = [NSString stringWithFormat:@"$%@", _matchCenterArray[indexPath.section][@"Top 3"][indexPath.row+1][@"Price"]];

[cell.contentView addSubview:cell.PriceLabel];

.....
}

注意:- 最佳实践是在 UITableViewCell 子类中提供数据。

关于ios - 子类化 UITableViewCell 不允许多个单元格标签,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26879430/

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