我想创建一个复选框按钮,它将在我的应用程序中的许多地方使用。我希望这个按钮的一个基本行为是在点击按钮时改变它的状态。所以我将这个按钮子类化并编写了以下类。awakeFromNib
基本上它只是在 -函数中为按钮添加了一个额外的目标方法。
//
// CheckBoxButton.h
// CheckBoxButton
//
// Created by Ankit Srivastava on 11/07/13.
// Copyright (c) 2013. All rights reserved.
//
#import <UIKit/UIKit.h>
@interface CheckBoxButton : UIButton
@end
这是.m
/
// CheckBoxButton.m
// CheckBoxButton
//
// Created by Ankit Srivastava on 11/07/13.
// Copyright (c) 2013. All rights reserved.
//
#import "CheckBoxButton.h"
@implementation CheckBoxButton
- (id)initWithFrame:(CGRect)frame
{
self = [super initWithFrame:frame];
if (self) {
// Initialization code
}
return self;
}
-(void)awakeFromNib{
[self addTarget:self action:@selector(alterState:) forControlEvents:UIControlEventTouchUpInside];
}
-(void) alterState:(UIButton*)sender {
[self setSelected:!self.isSelected];
}
@end
现在我通过 xib 添加按钮并将其基类更改为CheckBoxButton
. 每件事都很好,但我听说UIButton
不应该被子类化,但我找不到任何有据可查的证据,而且我只是在按钮上添加一个方法来改变它的状态。所以我的问题是这种方法是否可行..?
感谢您的投入。