0

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

感谢您的投入。

4

1 回答 1

0

我已经多次将 UIButton 子类化。这是一个类集群,所以这样做时可能会出现问题,但我还没有遇到任何阻碍。

于 2013-07-12T15:01:50.370 回答