Ios 以编程方式禁用UIButton

Ios 以编程方式禁用UIButton,ios,objective-c,uibutton,Ios,Objective C,Uibutton,我已经浏览了无数关于堆栈溢出的问题,所有的问题都是相同的。如何以编程方式禁用UIButton?他们没有一个人正确回答这个问题。我试过: [myButton setEnabled:NO]; 及 及 还有无数其他的。什么都没用 我在.h文件中声明了按钮: - (IBAction)myButton; 执行此操作的正确语法是什么?我正在尝试禁用视图didload中的按钮,以便以后可以重新启用它。(我知道[myButton setEnabled:NO];适用于通过iOutlet声明的按钮,但不适用于通

我已经浏览了无数关于堆栈溢出的问题,所有的问题都是相同的。如何以编程方式禁用UIButton?他们没有一个人正确回答这个问题。我试过:

[myButton setEnabled:NO];

还有无数其他的。什么都没用

我在
.h
文件中声明了按钮:

- (IBAction)myButton;

执行此操作的正确语法是什么?我正在尝试禁用
视图didload
中的按钮,以便以后可以重新启用它。(我知道
[myButton setEnabled:NO];
适用于通过
iOutlet
声明的按钮,但不适用于通过
iAction
声明的按钮)

如果您这样做,您将知道您的代码是否工作:

if(self.myButton)
{
    [self.myButton setEnabled:NO];
} else {
   NSLog(@"hey look, I forgot to connect the myButton outlet property!");
}
- (IBAction) myButton: (id) sender;
此外,您的按钮应声明为“
IBOutlet
”,例如:

// I use "weak" here because it's retained/kept by the storyboard/XIB file, although
// you could also use "strong"...
@property (weak) IBOutlet UIButton *myButton;
行动需要这样宣布:

if(self.myButton)
{
    [self.myButton setEnabled:NO];
} else {
   NSLog(@"hey look, I forgot to connect the myButton outlet property!");
}
- (IBAction) myButton: (id) sender;

所有iBaction都有一个“
发送者”
”属性。

我在第一次学习Cocoa时也遇到了这个问题

让我试着澄清你已经得到的答案,因为它听起来似乎对你没有意义

对IB中的UI元素进行故障排除就像对立体声系统或计算机进行故障排除一样。在立体声系统中,务必检查电缆。通常问题的原因是连接不良

同样,对于接口代码,原因通常是IBOutlet或IBAction连接断开或丢失

至于IBoutlet和IBActions是什么:

IBOutlets是与事物的连接:UIView某种对象。有时插座连接到按钮,有时是标签、文本字段或其他内容。名称“outlet”意味着它用于输出,就像在标签或文本字段中显示信息一样。这就是为什么它被称为IBOutlet。(虽然您可以将IBOutlet连接到UIButton,但您可以执行诸如启用/禁用按钮之类的操作。)

iBaction是动词。它们告诉UIControl对象(如按钮)在事件发生时应该执行什么代码(操作方法)。名字中的“行动”一词是你记住这一点的助记符

在您的情况下,您希望通过代码启用/禁用按钮。为了做到这一点,您需要一个IBOutlet连接到它

您需要在标题中定义IBOutlet(代码中的插座是插座,以继续立体模拟),然后需要将视图对象(立体组件)连接到IBOutlet(插座)。连接是电缆。如果不进行连接,则IBOutlet(插座)是空的,并且没有连接到任何东西。(电缆不见了。)

您可以进入IB,选择故事板场景,选择按钮,并显示“连接检查器”。它应该显示到视图控制器的IBOutlet连接

或者,正如Michael所建议的,您可以添加一个日志语句,在运行时检查插座连接是否良好


这有帮助吗?

为什么我不将按钮声明为
iAction
按钮?因为“
iAction
”是由按钮(或控件)调用的操作。@MichaelDautermann仅供参考-操作的
发送方
参数实际上是可选的。您只需要为处理多个按钮的操作使用它。对发件人执行某些操作是可选的,但是可以定义一个不使用参数“
(id)sender
”的有效操作吗?我创建了一个UIButton的
IBOutlet
实例,并将其附加到UIButton,同时保持
iAction
的附加状态。
[myButton setEnabled:否]有效。建议-当看似明显的变量不起作用时,在运行时验证该变量不是
nil
。上周你问过同样的问题吗@许音这是我第一次正确地禁用按钮。这是一个类似但不同的问题。