macOS和iOS连接UI和代码的修饰符@IBAction
macOS和iOS连接UI和代码的修饰符@IBAction

macOS和iOS连接UI和代码的修饰符@IBAction

@IBAction 是 macOS 和 iOS 开发中用于连接 UI 和代码的桥梁,特别是在使用 Storyboard / XIB 搭配 Interface Builder(IB) 时。

@IBAction 是一个属性修饰符,表示“这是一个可以在 Interface Builder 中连接的事件方法”。

它的作用是在 StoryboardXIB 中将按钮、菜单项等控件的事件,连接到这个方法上。

示例代码

class ViewController: NSViewController {

    @IBAction func buttonClicked(_ sender: Any) {
        print("按钮被点击")
    }
}

可以在 Xcode 的 Interface Builder 中:

1、拖动一个按钮到界面上。

2、按住 Control(⌃),拖拽按钮到 ViewController 类。

3、选择 Action 类型。

4、就会自动生成这个方法,或绑定到这个已有的 @IBAction 上。

相关操作可见《Learn the Basics of Interface Builder》,该教程中可以实现拖动。但在Xcode16中已经无法实现拖动和选择Action。

因为本文主要在于了解StoryboardXIB中使用 @IBAction,因此,不做详细的研究。

和普通函数的区别

1、普通方法只能在代码中调用,@IBAction方法可以从 Interface Builder 中连接。

2、普通方法没有特殊标记,@IBAction方法会被标记为 Interface Builder 的目标方法。

3、普通方法不一定要暴露,@IBAction方法通常与 UI 交互紧密。

和 @objc 的关系?

@IBAction 本质上就是:

@objc func buttonClicked(_ sender: Any) { }

所以 @IBAction 默认隐式添加了 @objc 修饰符,可以被 Objective-C 的运行时调用(这是 Interface Builder 所依赖的机制)。

同类修饰符:@IBOutlet

1、@IBAction:连接 UI 控件的事件(动作)方法。

2、@IBOutlet:连接 UI 控件本身的引用变量。

应用场景

1、按钮点击事件。

2、菜单项选择事件。

3、拖动事件处理。

4、滑块、开关值改变事件等。

总结

@IBAction 是专门为 Interface Builder 准备的“事件处理”标记,用于响应 UI 控件的行为,比如点击按钮或选择菜单项。

使用 Storyboard / XIB 开发(不是SwiftUI)macOS/iOS App 时,想要连接按钮、菜单项、滑块等事件,就使用 @IBAction。

参考文章

Learn the Basics of Interface Builder:https://trailhead.salesforce.com/zh-CN/content/learn/modules/xcode-essentials/learn-interface-builder?utm_source=chatgpt.com

   

如果您认为这篇文章给您带来了帮助,您可以在此通过支付宝或者微信打赏网站开发者。

欢迎加入我们的 微信交流群QQ交流群,交流更多精彩内容!
微信交流群二维码 QQ交流群二维码

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注