2016-04-27 41 views
1

我有一个MapKit视图,最初用北美地图加载。如何隐藏用@IBAction声明的按钮?

我在这个MapKit上有一个按钮,在我的故事板上作为图像。我用@IBAction把它连接到我的ViewController。

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

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

+0

你需要一个出口,而不是一个动作,如果你想访问按钮。 – rmaddy

+0

如果我这样做,单击按钮时调用缩小功能的最佳方法是什么? – 221b

+1

该操作用于处理按钮水龙头。这个插座是用来处理按钮的。 – rmaddy

回答

1

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

为了随意访问按钮,除了@IBAction之外,还需要制作@IBOutlet,并将按钮与其绑定。根据需要,这将让你设置hidden属性:

button.hidden = YES; 
+0

谢谢!将我的@IBOutlet与我的@IBAction绑定的最佳方式是什么? – 221b

+1

@ user1650978您不需要将其中一个与另一个绑在一起,您可以通过命令从IB拖动到代码窗口来将“UIButton”绑定到两者。 – dasblinkenlight

0

要在@ dashblinkenlight的回答扩大:

的IBAction为是从控制到一段代码,获取运行一个链接,当用户触发控制。

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

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

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

所以你有时需要这两个,在这种情况下。

Interface Builder有多种方式来定义和链接插座。我发现最简单的方法是将Interface Builder放在主编辑器窗格中,并以“自动”模式设置助理编辑器,以便显示用于定义所选视图控制器的视图控制器的头文件。

然后我控制 - 从控件(或其他视图对象)拖动到头文件,并选择“出口”。 Xcode都向源代码添加了IBOutlet声明,并且使IBOutlet连接成功。

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

(如果你使用的斯威夫特,那么你没有头和执行文件,所以不会有2个地方定义操作。)