Xcode 中的 Control-drag 给出了出口,但没有对 UIButton 的操作。为什么?

Control-drag in Xcode gives outlets, but no action for UIButton. Why?

在我正在构建的应用程序中,我有一个导航控制器和一个作为子视图连接的视图控制器(这个词正确吗?)。我添加了一个 UIButton 并尝试按住 Control 键将其拖到我的视图控制器 class 文件中,但它只给我 Outlet 和 Outlet 集合作为我的选项,而不是 Action。

Screenshot of what I'm seeing

这是一个非常简单的应用程序,我尝试删除我的 Pods 作为修复,但到目前为止运气不好。

我也试过手动编写函数并尝试将其连接回按钮,但无济于事。拖回工作区中的按钮不起作用,并且在我测试应用程序时该功能未触发。这是我试过的代码:

@IBAction func tapSaveButton(_ sender: UIButton) {}

这可能很简单,所以我在这里缺少什么?

编辑:此外,这是我的设置方式。我有一个带有 UINavigationItem 的导航控制器,它显示一个子 ViewController。有问题的按钮在子 ViewController 中,我设置了一个新的 swift 文件来处理 ViewController 的 class。我正在尝试将该按钮连接到 class 文件,但它无法正常工作。

Screenshot of my storyboard

这是我的 ViewController class 的代码:

import Foundation
import UIKit
import KeychainSwift


class SettingsViewController : UIViewController {

    let keychain = KeychainSwift()

    @IBOutlet weak var APIKeyField: UITextField!
    @IBOutlet weak var WebSocketIPField: UITextField!
    @IBOutlet weak var SettingsSaveButton: UIButton!

    override func viewDidAppear(_ animated: Bool)  {
        super.viewDidAppear(animated)

        /* My other code, not related */
    }

    @IBAction func tapSaveButton(_ sender: UIButton) {

        // My button actions here.

    }

}

右键单击故事板中的 ui 按钮,您应该会在 "Sent Events" 下看到一个操作选项列表,最常用的是 "Touch Up Inside"。

从你想要的那个(圈到一边)拖到你的视图控制器上,一切都应该工作正常。

编辑:为清楚起见,您甚至可以从 "Touch Up Inside" 拖动到您已经创建的函数,只要它被标记为

@IBAction ...

您的代码已经完成了。

当然是愚蠢的事情。我从按钮中删除了 class,中提琴,它让我在我的 Swift 文件中创建一个动作。

我也遇到过这样的情况,当我在我的项目中添加本地化时,从那个时候在本地化中添加了情节提要,情节提要按钮不显示任何操作选项,只显示出口选项。

也许您尝试连接到其他 viewcontroller 请再次检查它是否正确 viewcontroller 并准确连接到情节提要