如何隐藏用@IBAction声明的按钮?

时间:2016-04-27 00:05:18

标签: ios uibutton ibaction

我有一个MapKit视图,最初加载北美地图。

我在MapKit上有一个按钮,在我的故事板上作为图像。我已使用@IBAction将其挂钩到我的ViewController。

但是,我想在我的视图最初加载时隐藏此按钮,并仅在用户放大到地图时显示它。

是否有可能在初始加载时以某种方式隐藏此按钮?我们是否需要将操作引用到UIButton,反之亦然?

2 个答案:

答案 0 :(得分:2)

由于@IBAction指定了一个函数,而不是一个对象,因此在调用它之前,您无法使用它来访问UIButton

要随时访问按钮,您需要在@IBOutlet之外设置@IBAction,并将按钮绑定到该按钮。这样您就可以根据需要设置hidden属性:

button.hidden = YES;

答案 1 :(得分:0)

要扩展@ dashblinkenlight的答案:

IBAction是从控件到用户触发该控件时运行的一段代码的链接。

IBOutlet是从代码到控件的另一个方向的链接。

如果您希望控件在用户与其交互时调用您的代码,则需要定义从控件到源的操作和链接。

如果您希望代码与控件进行交互,则需要定义从源代码到控件的插座和链接。

所以你有时需要两者,就像在这种情况下一样。

Interface Builder有多种方式来定义和链接出口。我发现最简单的方法是将Interface Builder放在主编辑器窗格中,并在" automatic"中设置助理编辑器。模式,因此它显示视图控制器的头文件,用于定义您选择的视图控制器。

然后我控制 - 从控件(或其他视图对象)拖动到头文件中,然后选择" outlet"。 Xcode都会在源代码中添加IBOutlet声明,并建立IBOutlet连接。

我为定义动作做了同样的事情,但这次我告诉IB创建一个动作,而不是一个出口。在这种情况下,Xcode在头文件中创建IBAction enter code here的声明,并且还创建一个空的" stub" .m文件中的操作方法。

(如果你使用Swift,那么你就没有头文件和实现文件,所以没有2个地方可以定义动作。)