我试图在UILabel控制器的单元格中显示UIControl文本(tableview的子类)。

我的代码如下:

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;
}

我的问题是该单元格未显示我在上面设置的标签。我这里缺少什么吗?

最佳答案

似乎您没有在 class 中为UILabel设置框架。

在UILabel上调用sizeToFit,将框架设置为与您的单元格的整体大小匹配,使用autosizeMask或在UIControlLabel中实现-layoutSubviews(然后您可能需要调用[cell setNeedsLayout]

关于objective-c - objective-c :标签文本(UIControl的子类)未显示在UITableview中,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/6322166/

10-11 22:26