【问题标题】:How to programmatically disable/enable a UIBarButtonItem如何以编程方式禁用/启用 UIBarButtonItem
【发布时间】:2014-03-05 10:24:47
【问题描述】:

我目前有一个名为 continueButton 的按钮,它已分配给 Storyboard 文件中的 UIBarButtonItem 按钮。我已经这样声明了按钮:

- (IBAction)continueButton;

当视图加载时,我希望按钮自行禁用,这样就没有用户输入,除非调用了重新启用按钮的用户输入的命令。我该怎么做呢?我正在尝试使用函数[continueButton setEnabled:YES]; 以编程方式禁用/启用按钮,但它无法正常工作。

【问题讨论】:

  • 这不是你声明 UIBarButtonItem 的方式。您想要的是故事板中按钮的 IBOutlet,以便您可以参考它。 IBAction 用于处理按钮上的点击或其他手势。
  • 如果您搜索“uibarbuttonitem disable”会发现什么?
  • 您混淆了渠道和行动。它们不一样。 IBAction 是控件和在触发控件时调用的方法之间的链接(通常通过点击,但也可以通过其他事件,例如更改滑块的值。) IBOutlet 是从 IB 对象到您的代码,所以你有一种方法来引用对象。正如其他人所建议的那样,您需要在条形按钮项和视图控制器类之间创建一个出口链接。然后您可以根据需要使用该插座启用/禁用该项目。

标签: ios objective-c storyboard xcode5 uibarbuttonitem


【解决方案1】:

您尚未将UIBarButtonItem 暴露给您的代码。要使控件的属性可访问,它要么需要连接到IBOutlet(XIB 和代码之间的桥梁),如 hw731 所说,要么首先以编程方式创建。操作更像是将方法绑定到控件引发的事件。

如果您在建立连接时看不到OutletOutlet 集合的选项,则很可能您在.m 文件而不是.h 文件中。

【讨论】:

    【解决方案2】:

    在阅读了一些 cmets 之后,我意识到我不应该将 UIBarButtonItem 设置为 IBAction 按钮,而是通过 IBOutlet 设置。这样做之后,重新连接 Storyboards 中的按钮,我之前尝试的命令起作用了。

    [continueButton setEnabled:NO];
    

    或(用于启用按钮):

    [continueButton setEnabled:YES];
    

    【讨论】:

    • 如果某个答案帮助您解决了问题,请不要忘记接受一个作为答案。编码愉快!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-02-22
    • 2011-03-04
    • 2013-07-03
    相关资源
    最近更新 更多