我想创建一个复选框按钮,它将在我的应用程序中的许多地方使用。我想要这个按钮的一个基本行为是在按下按钮时改变其状态。所以我将此按钮子类化并编写了以下类。基本上它只是在 - 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
不应该是子类,但我找不到任何记录的证据,而且我只是在按钮上添加一个方法来改变它的状态。所以我的问题是这种方法是否正常......?
感谢您的投入。
答案 0 :(得分:0)
我已经多次将UIButton子类化了。这是一个类集群,所以这样做有潜在的问题,但我还没有碰到任何show stoppers。