2

我在尝试让自定义 UITableViewCell 显示任何自定义标签/控件时遇到重大问题。我有一个使用相同代码的类似项目,它运行良好......唯一的区别是我在 UITableViewController 中使用表格单元格,而不是在问题页面中使用嵌入在 UIViewController 中的 UITableView 中的表格单元格。. 对 stackoverflow 的一些搜索提出了以下问题,所有这些问题我都已正确设置:

1) tableView:cellForRowAtIndexPath: 中的 CellIdentifier: 匹配故事板标识符
2) 所有 IBOutlets 都正确连接

我怀疑这可能与我加载页面的方式有关(我在 viewDidLayoutSubviews 方法中做了很多页面加载,因为我使用故事板自动布局,所以我需要访问 viewDidLoad 中不可用的帧大小等)

有什么建议么?
安迪

编辑:顺便说一句,如果我使用标准 UITableViewCell 而不是我的自定义标签,它可以完美地使用 cell.textLabel.text = @"..." 等。这似乎与我的自定义单元格有关。

视图控制器.h

@interface ViewController : UIViewController <UITableViewDataSource, UITableViewDelegate>

@property (nonatomic, weak) IBOutlet UITableView *tableView;
@property (weak, nonatomic) IBOutlet UIView *flipContainerView;
...

@end

视图控制器.m

@implementation ViewController

@synthesize tableView = _tableView;
@synthesize flipContainerView = _flipContainerView;

...

- (void)viewDidLayoutSubviews {

    self.tableView.frame = CGRectMake((self.flipContainerView.frame.size.width / 2) - (self.flipContainerView.frame.size.width / 2),
                                  (self.flipContainerView.frame.size.height / 2) - (self.flipContainerView.frame.size.height / 2),
                                  self.flipContainerView.frame.size.width,
                                  self.flipContainerView.frame.size.height);

    ...

    [self.tableView reloadData];
}   

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
    static NSString *CellIdentifier = @"List Cell";
    ListCell *cell = (ListCell *)[tableView dequeueReusableCellWithIdentifier:CellIdentifier forIndexPath:indexPath];

    if (cell == nil) {
        cell = [[ListCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier];
    }
    cell.testLabel.text = nil;

    cell.testLabel.text = @"test value";
    return cell;
}

列表细胞.h

@interface ListCell : UITableViewCell

@property (nonatomic, weak) IBOutlet UILabel *testLabel;

@end

列表细胞.m

#import "ListCell.h"

@implementation ListCell

@synthesize testLabel = _testLabel;

- (id)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier {
    self = [super initWithStyle:style reuseIdentifier:reuseIdentifier];
    if (self) {
        // Initialization code
    }
    return self;
}

- (void)setSelected:(BOOL)selected animated:(BOOL)animated {
    [super setSelected:selected animated:animated];

    // Configure the view for the selected state
}

@end

在此处输入图像描述

在此处输入图像描述

4

0 回答 0