如何隐藏用@IBAction 声明的按钮?
How can one hide a button declared with an @IBAction?
我有一个 MapKit 视图,它最初加载了北美地图。
我在这个 MapKit 上有一个按钮,在我的故事板上作为图像。我已经用 @IBAction
.
将它连接到我的 ViewController
但是,我想在最初加载视图时隐藏此按钮,并仅在用户放大地图时显示它。
是否可以在初始加载时以某种方式隐藏此按钮?我们是否需要将操作引用到 UIButton 或反之亦然?
由于 @IBAction
指定了一个函数,而不是一个对象,在它被调用之前,您不能使用它来访问您的 UIButton
。
为了随意访问按钮,除了您拥有的 @IBAction
之外,您还需要制作一个 @IBOutlet
,并将您的按钮绑定到它。这将使您可以根据需要设置 hidden
属性:
button.hidden = YES;
扩展@dashblinkenlight 的回答:
IBAction 是 link 从控件到当用户触发该控件时获得 运行 的一段代码。
IBOutlet 是另一个方向的 link,从您的代码到控件。
如果您希望控件在用户与之交互时调用您的代码,您需要定义一个操作和从控件到源的 link。
如果您希望您的代码与控件交互,您需要定义一个出口和 link 从您的源代码到您的控件。
所以有时您需要同时使用这两种方法,例如本例。
Interface Builder 有多种定义和 link 插座的方法。我发现最简单的方法是将 Interface Builder 放在主编辑器窗格中,并在 "automatic" 模式下设置辅助编辑器,以便它显示定义视图控制器的视图控制器的头文件 selected.
然后我从控件(或其他视图对象)中按住 control 并拖动到头文件中,然后 select "outlet"。 Xcode 都向源代码添加了一个 IBOutlet
声明,并建立了 IBOutlet
连接。
我对定义动作做同样的事情,只是这次我告诉 IB 创建一个动作,而不是一个出口。在这种情况下,Xcode 在头文件中创建 IBAction enter code here
的声明,并在 .m 文件中创建一个空的 "stub" 操作方法。
(如果您使用的是 Swift,那么您没有头文件和实现文件,因此没有 2 个地方可以定义操作。)
我有一个 MapKit 视图,它最初加载了北美地图。
我在这个 MapKit 上有一个按钮,在我的故事板上作为图像。我已经用 @IBAction
.
但是,我想在最初加载视图时隐藏此按钮,并仅在用户放大地图时显示它。
是否可以在初始加载时以某种方式隐藏此按钮?我们是否需要将操作引用到 UIButton 或反之亦然?
由于 @IBAction
指定了一个函数,而不是一个对象,在它被调用之前,您不能使用它来访问您的 UIButton
。
为了随意访问按钮,除了您拥有的 @IBAction
之外,您还需要制作一个 @IBOutlet
,并将您的按钮绑定到它。这将使您可以根据需要设置 hidden
属性:
button.hidden = YES;
扩展@dashblinkenlight 的回答:
IBAction 是 link 从控件到当用户触发该控件时获得 运行 的一段代码。
IBOutlet 是另一个方向的 link,从您的代码到控件。
如果您希望控件在用户与之交互时调用您的代码,您需要定义一个操作和从控件到源的 link。
如果您希望您的代码与控件交互,您需要定义一个出口和 link 从您的源代码到您的控件。
所以有时您需要同时使用这两种方法,例如本例。
Interface Builder 有多种定义和 link 插座的方法。我发现最简单的方法是将 Interface Builder 放在主编辑器窗格中,并在 "automatic" 模式下设置辅助编辑器,以便它显示定义视图控制器的视图控制器的头文件 selected.
然后我从控件(或其他视图对象)中按住 control 并拖动到头文件中,然后 select "outlet"。 Xcode 都向源代码添加了一个 IBOutlet
声明,并建立了 IBOutlet
连接。
我对定义动作做同样的事情,只是这次我告诉 IB 创建一个动作,而不是一个出口。在这种情况下,Xcode 在头文件中创建 IBAction enter code here
的声明,并在 .m 文件中创建一个空的 "stub" 操作方法。
(如果您使用的是 Swift,那么您没有头文件和实现文件,因此没有 2 个地方可以定义操作。)