通过子类化来改变UIButton行为

时间:2013-07-12 14:51:07

标签: ios objective-c uibutton

我想创建一个复选框按钮,它将在我的应用程序中的许多地方使用。我想要这个按钮的一个基本行为是在按下按钮时改变其状态。所以我将此按钮子类化并编写了以下类。基本上它只是在 - 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不应该是子类,但我找不到任何记录的证据,而且我只是在按钮上添加一个方法来改变它的状态。所以我的问题是这种方法是否正常......?

感谢您的投入。

1 个答案:

答案 0 :(得分:0)

我已经多次将UIButton子类化了。这是一个类集群,所以这样做有潜在的问题,但我还没有碰到任何show stoppers。