目标 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 中的主要内容,如果未能解决你的问题,请参考以下文章

如何正确子类UIControl?

子类 UIControl 来制作自定义选择器

文本句柄 uicontrol 在回调函数中未正确更新

在警报级别窗口中具有自定义 inputView 的 UIControl

检测触发 UIControl 动作的事件类型

突出显示 UIControl 子类