为什么isEqual:不适用于属性UIButton?

时间:2014-06-15 11:14:15

标签: ios objective-c xcode if-statement uibutton

我遇到了问题: 我已经设置了一个属性:

@property (strong, nonatomic) UIButton *buttonX;

我还有一种创建按钮的方法:

-(void)createChooseButton : (UIButton *) button
{
    button = [UIButton buttonWithType:UIButtonTypeRoundedRect];
    button.frame = CGRectMake(0, 0, 50, 50);
    button.layer.borderWidth = 1;
    button.layer.borderColor = [[UIColor greenColor] CGColor];

    if ([button isEqual:self.buttonX]) {
        NSLog(@"Hello");
        [button setTitle:@"X" forState:UIControlStateNormal];
        button.center = CGPointMake(self.view.frame.size.width/3, self.view.frame.size.height*2/3);
    }

    [self.view addSubview:button];
}

当我从viewDidLoad调用此方法时,它不起作用,但如果我不使用If语句(使用isEqual),一切正常。 请问你能帮助我,我做错了什么?

2 个答案:

答案 0 :(得分:0)

isEqual在这里不起作用,因为你有两个指针,一个指向按钮&第二个按钮X.如果你需要检查按钮,请在didload&中为buttonX指定一个标签属性。然后在createChooseButton方法中检查它。

答案 1 :(得分:0)

当你首先通过buttonX时,它是零。 你必须alloc然后调用方法。

你应该致电

_buttonX = [UIButton buttonWithType:UIButtonTypeRoundedRect];

然后致电

[createChooseButton:self.buttonX]

请勿在方法中调用 buttonWithType:UIButtonTypeRoundedRect