如何子类化UILabel?

时间:2011-06-28 16:12:09

标签: ios methods override uilabel subclassing

我创建了一个名为CommaLabel的UILABEL的简单子类,它最终会将逗号插入到数字字符串中,就像苹果公司的计算器一样。编译器说我的实现不完整。愚蠢的问题:缺少什么? (我也不明白我在这里对内存管理要做些什么: - /)(我可能最终只是在视图控制器中实现处理代码,但我只是想知道这看起来怎么样此时......)

#import <Foundation/Foundation.h>


@interface CommaLabel : UILabel

-(void)text:(NSString *)text;
-(void)setText:(NSString*)text;



@end

#import "CommaLabel.h"

@implementation CommaLabel



- (id)init
{
    self = [super init];
    if (self) {
        // Initialization code here.
    }

    return self;
}

-(NSString *) text{

    return super.text; 
}



-(void)setText:text
{

    super.text=text;
}

@end

2 个答案:

答案 0 :(得分:1)

什么不完整?

这在标题中:

-(void)text:(NSString *)text;

在身体中不匹配:

-(NSString *) text{

    return super.text; 
}

因此,标题中指定为存在的函数不在正文中。这会生成编译器警告,表明实现不完整。

答案 1 :(得分:1)

我认为从一本关于Objective-C和iPhone编程的书籍或教程开始,你会做得很好。无需使用@property@synthesize明确编写这些setter和getter方法。但是,为了解决眼前的问题,你的.h应该是:

-(NSString*)text;
-(void)setText:(NSString*)newText;

和.m应该是:

-(NSString*)text{
    return text;
}

-(void)setText:(NSString*)newText {
    text = newText;
}

通常最好将方法从.h复制并粘贴到.m以确保它们完全匹配。