0

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

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

如果我在 IBAction 调用的函数中将 sender 替换为 _cameraButton,这也不起作用。我有与 IBOutlet 链接的 UIButton。

我可以发布代码,但现在这是一个相当大的项目,以下是相关位:

在标题...

IBOutlet UIButton *_cameraButton;

IBA行动...

- (IBAction) _cameraButtonPress:(id)sender {

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

进一步在不同的功能中:

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


}

有任何想法吗?

谢谢。

4

2 回答 2

5

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

NSLog(@"%@", _cameraButton);
于 2012-05-27T15:17:02.203 回答
1

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

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

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

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

@synthesize cameraButton = _cameraButton;

这可能与按钮的相关性不如其他属性,但良好的做法建议与声明的属性关联的 ivars 使用下划线,而不是属性本身。

请参阅Apple 的 Cocoa 编码指南中的命名属性和数据类型。

于 2012-05-27T15:22:00.620 回答