0

我有一个 AuthButtons.h 标头:

#import <UIKit/UIKit.h>

@interface AuthButtons : UIButton

@property (nonatomic, weak) UIColor *backgroundColor;


@end

AuthButtons.m 类的实现如下:

#import "AuthButtons.h"

@implementation AuthButtons

- (void)setBackgroundColor:(UIColor *)backgroundColor
{
    backgroundColor = [UIColor blueColor];
}

- (UIColor *)backgroundColor
{
    return [UIColor whiteColor];
}


- (id)initWithFrame:(CGRect)frame
{
    self = [super initWithFrame:frame];
    if (self) {
        // Initialization code
    }
    return self;
}

然后在我的 viewcontroller.m 类中,我有:

@interface ViewController ()

@property (nonatomic, weak) AuthButtons *registerButton;


@end


...

@implementation ViewController

- (void)viewDidLoad
{
    [super viewDidLoad];

    _registerButton = [AuthButtons buttonWithType:UIButtonTypeSystem];
    [_registerButton setTitle:@"Register" forState:UIControlStateNormal];
    [_registerButton setBackgroundColor:[UIColor whiteColor]];
    _registerButton.frame = CGRectMake(0.0, 0.0, self.screenWidth / 2.0, 100.0);

    [_registerButton addTarget:self action:@selector(buttonPressed:) forControlEvents:UIControlEventTouchUpInside];
}

当我尝试创建按钮时,它一直在崩溃。我错过了什么?

4

2 回答 2

2

您的按钮很弱并且没有添加为子视图,因此它立即被释放

于 2013-08-29T04:47:27.707 回答
1

使用强而不是弱(在启用 ARC 的类中使用按钮时,我总是使用强类型,不确定它是否是一个坏习惯 :-))

@property (nonatomic, strong) AuthButtons *registerButton;

并将其添加为您的子视图([self.view addSubview:_registerButton])。希望您已经实现了-(void)buttonPressed:(id )sender类中调用的函数。

于 2013-08-29T04:59:07.760 回答