目标 C:标签文本(UIControl 的子类)未显示在 UITableview 中
Posted
技术标签:
【中文标题】目标 C:标签文本(UIControl 的子类)未显示在 UITableview 中【英文标题】:Objective C: Label Text (subclass of UIControl) not displayed in UITableview 【发布时间】:2011-06-12 13:19:58 【问题描述】:我正在尝试在 tableview
控制器的单元格中显示 UILabel
文本(UIControl
的子类)。
我的代码如下:
在UIControl
标签.h文件中
#import <Foundation/Foundation.h>
@interface UIControlLabel : UIControl
UILabel *userNameLabel;
@property (nonatomic, retain) UILabel *userNameLabel;
@end
在UIControl.m
文件中
#import "UIControlLabel.h"
@implementation UIControlLabel
@synthesize userNameLabel;
- (id)initWithFrame:(CGRect)frame
self = [super initWithFrame:frame];
if (self)
NSLog(@"in init with frame method");
self.userNameLabel = [[UILabel alloc] init];
[self addSubview: userNameLabel];
return self;
@end
在tableviewcontroller .m 文件中
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
static NSString* PlaceholderCellIdentifier = @"PlaceholderCell";
int row = [indexPath row];
Answer *thisAnswer = [self.array objectAtIndex:row];
UITableViewCell* cell = [tableView dequeueReusableCellWithIdentifier:PlaceholderCellIdentifier];
if (cell == nil)
cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:PlaceholderCellIdentifier] autorelease];
UIControlLabel *control = [[UIControlLabel alloc]initWithFrame:CGRectMake(35, 10,100, 10)];
control.userNameLabel.font = [UIFont fontWithName:@"Helvetica-Bold" size:13.0];
control.tag = 2;
[cell.contentView addSubview:control];
UIControlLabel *thisControl = (UIControlLabel *)[cell.contentView viewWithTag:2];
thisControl.userNameLabel.text = [NSString stringWithFormat:@"%@",thisAnswer.userName];
return cell;
我的问题是单元格没有显示我在上面设置的标签。我在这里错过了什么吗?
【问题讨论】:
【参考方案1】:似乎您没有在班级中为 UILabel 设置框架。
在 UILabel 上调用 sizeToFit
,设置框架以匹配单元格的整个大小,使用 autosizeMask
或在 UIControlLabel 中实现 -layoutSubviews
(然后您可能需要调用 [cell setNeedsLayout]
。
【讨论】:
以上是关于目标 C:标签文本(UIControl 的子类)未显示在 UITableview 中的主要内容,如果未能解决你的问题,请参考以下文章