如何以编程方式禁用/启用UIBarButtonItem?

3

我目前有一个名为continueButton的按钮,已经被指派为一个Storyboard文件中的UIBarButtonItem按钮。我声明了这个按钮如下:

- (IBAction)continueButton;

当视图加载时,我希望按钮自动禁用,以确保除非调用重新启用用户输入的命令,否则不能进行用户输入。如何实现这一点?我正在尝试使用函数[continueButton setEnabled:YES]; 来编程地禁用/启用按钮,但它无法正常工作。


1
这不是声明UIBarButtonItem的正确方式。你需要在Storyboard中将按钮连接为IBOutlet,以便可以引用它。IBAction用于处理对按钮的点击或其他手势操作。 - hgwhittle
如果你搜索“uibarbuttonitem disable”,你会发现什么? - El Tomato
1
你混淆了outlets和actions,它们是不同的。IBAction是控件和方法之间的链接,当控件被触发时调用该方法(通常是通过点击,但也可以通过其他事件如更改滑块的值)。IBOutlet是从IB对象到您的代码的链接,因此您有一种引用对象的方式。正如其他人建议的那样,您需要在您的视图控制器类和您的工具栏按钮项之间创建一个outlet链接。然后,您可以使用该outlet根据需要启用/禁用该项。 - Duncan C
2个回答

5

你还没有在你的代码中暴露 UIBarButtonItem。要访问控件的属性,它需要连接到一个 IBOutlet (XIB 和代码之间的桥梁),正如 hw731 所说,或者在代码中创建。而 action 更像是将一个方法绑定到控件引发的事件。

Outlet 与 Action 的示例

如果你在进行连接时看不到 OutletOutlet 集合选项,那么很可能你正在 .m 文件中而不是 .h 文件中。


0
阅读了一些评论后,我意识到我不应该将UIBarButtonItem设置为IBAction按钮,而是通过IBOutlet进行设置。在这样做并重新连接Storyboards中的按钮之后,我之前尝试的命令起作用了。
[continueButton setEnabled:NO];

或者(用于启用按钮):

[continueButton setEnabled:YES];

如果一个答案帮助你解决了问题,请不要忘记接受它作为答案。编码愉快! - Forrest

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接