我在尝试让自定义UITableViewCell显示任何自定义标签/控件时遇到了重大问题。我有一个类似的项目使用相同的代码,它完美地工作...唯一的区别是我在UITableViewController中使用表格单元格,而不是我在UIViewController中嵌入的UITableView中使用表格单元格的问题页面。 。有些搜索stackoverflow已经提出了以下问题,我已经正确设置了所有这些问题:
1)tableView中的CellIdentifier:cellForRowAtIndexPath:匹配故事板标识符
2)所有IBOutlet都正确连接
我怀疑它可能与我加载页面的方式有关(我在viewDidLayoutSubviews方法中进行了大量页面加载,因为我使用了storyboard autolayout,因此我需要访问viewDidLoad中不可用的帧大小等)
有什么建议吗? 安迪
编辑:顺便说一句,如果我使用标准的UITableViewCell而不是我的自定义标签,它只能使用cell.textLabel.text = @“...”等。它似乎与我的自定义单元格有关
viewController.h
@interface ViewController : UIViewController <UITableViewDataSource, UITableViewDelegate>
@property (nonatomic, weak) IBOutlet UITableView *tableView;
@property (weak, nonatomic) IBOutlet UIView *flipContainerView;
...
@end
viewController.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;
}
ListCell.h
@interface ListCell : UITableViewCell
@property (nonatomic, weak) IBOutlet UILabel *testLabel;
@end
ListCell.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