我已经尝试了所有我在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];
}
有什么想法吗?
感谢。
答案 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。