【问题标题】:iOS UIButton, setEnabled and button.hidden not workingiOS UIButton、setEnabled 和 button.hidden 不起作用
【发布时间】:2012-05-27 15:10:29
【问题描述】:

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

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

如果我在 IBAction 调用的函数中将 sender 替换为 _cameraButton,这也不起作用。我将 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];


}

有什么想法吗?

谢谢。

【问题讨论】:

  • 作为测试,在 _cameraButtonPress 中添加一行代码:if(sender == _cameraButton) { NSLog(@"Sender is _cameraButton") } 如果没有,那么按钮没有正确链接,这就是你的问题。
  • 是的,联动很好,日志显示_cameraButton是发送者。不过干杯:
  • 您是否有多个按钮连接到_cameraButton?
  • 不,只有一个链接。我真的被这个弄糊涂了。

标签: ios events uibutton ibaction iboutlet


【解决方案1】:

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

NSLog(@"%@", _cameraButton);

【讨论】:

  • 你好。是的,连接都很好。事实证明这个问题是我怀疑任何人都可以解决的问题,快速关闭并重新打开项目解决了它。所以我猜这是 Xcode 的一个怪癖。最近一直困扰着我很多。感谢您的帮助。
【解决方案2】:

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

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

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

而且,如果您需要 ivar,您的 @synthesize 语句可以是:

@synthesize cameraButton = _cameraButton;

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

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

【讨论】:

  • 谢谢,出于某种我现在不记得的原因,我以下划线开头,但是是的,坚持惯例对我有好处。我会改变它们。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-11-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多