我有一个MapKit视图,最初加载北美地图。
我在MapKit上有一个按钮,在我的故事板上作为图像。我已使用@IBAction
将其挂钩到我的ViewController。
但是,我想在我的视图最初加载时隐藏此按钮,并仅在用户放大到地图时显示它。
是否有可能在初始加载时以某种方式隐藏此按钮?我们是否需要将操作引用到UIButton,反之亦然?
答案 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个地方可以定义动作。)