iOS UIButton,setEnabled和button.hidden不起作用

时间:2012-05-27 15:10:30

标签: ios events uibutton ibaction iboutlet

我已经尝试了所有我在SO上找到的答案,所以要么我有一个不同的问题,要么是我的大脑有热量。

无论如何,我在故事板上有一个UIButton,它链接到一个叫做_cameraButtonPress的IBAction(UIButton叫做_cameraButton)。当按下按钮时我想禁用按钮一段时间,所以我立即调用[sender setEnabled:NO];这很好用。但是,在保存图像的不同功能中,成功保存后我使用[_cameraButton.setEnabled:YES];这不起作用。

如果我在IBAction调用的函数中用_cameraButton替换sender,这也不起作用。我将UIButton与IBOutlet联系起来。

我可以发布代码,但现在这是一个非常大的项目,以下是相关内容:

在标题中......

IBOutlet UIButton *_cameraButton;

IBAction ......

- (IBAction) _cameraButtonPress:(id)sender {

[sender setEnabled:NO];  //stops button responding to touch events

继续执行不同的功能:

} else {
    NSLog(@"colour image saved successfully");
    [_cameraButton setEnabled:YES];


}

有什么想法吗?

感谢。

2 个答案:

答案 0 :(得分:5)

您确定已将_cameraButton与UIButton相关联吗?尝试记录_cameraButton以查看它是否包含对有效对象的引用。

NSLog(@"%@", _cameraButton);

答案 1 :(得分:1)

保罗的回答是最合乎逻辑的问题。

另外,下划线约定用于区分ivars和属性。因此,您将拥有类似(对于ARC)的属性:

@property (nonatomic, weak) IBOutlet UIButton *cameraButton;

而且,如果您需要ivar,您的@synthesize声明可能是:

@synthesize cameraButton = _cameraButton;

这可能与按钮的相关性低于其他属性,但良好实践表明与声明的属性相关联的ivars的下划线,而不是属性本身。

请参阅 Apple的Cocoa编码指南中的Naming Properties and Data Types