无法在新的自定义类 Xcode 11 中连接到 IBOutlet

Posted

技术标签:

【中文标题】无法在新的自定义类 Xcode 11 中连接到 IBOutlet【英文标题】:Cannot connect to IBOutlet in a new custom class Xcode 11 【发布时间】:2020-01-23 02:44:53 【问题描述】:

我正在 Xcode 11 中开发一个 ios 项目,以创建一个将华氏温度转换为摄氏度的应用程序。我删除了默认的 ViewController.swift 文件并创建了一个名为 ConversionViewController.swift 的具有更具描述性的名称的自定义类。然后将该文件保存到当前项目中。该文件包含以下代码行:

class ConversionViewController: UIViewController 

    @IBOutlet var celsiusLabel: UILabel!

    @IBAction func fahrenheitFieldEditingChanged(_ textField: UITextField) 
        celsiusLabel.text = textField.text
    

在 Main.storyboard 中,我在文档大纲中选择了View Controller,然后打开了身份检查器。在身份检查器的Custom Class 部分中,我将类更改为ConversionViewController,并在模块字段下方检查了Inherit module from target。接下来,我想为摄氏度文本标签创建一个出口,并为文本字段创建一个操作,以便在文本更改时调用。因此,我打开 Main.storyboard 并尝试从文档大纲中的Conversion View Controller 控制拖动到摄氏度标签,并将其连接到 ConversionViewController.swift 中的celsiusLabel

问题是 Xcode 不允许我这样做。当我从Conversion View Controller 控制拖动到摄氏度标签时,没有任何反应。我没有弹出框让我选择插座celsiusLabel

我已尝试转到 Product --> Clean Build Folder,但这并没有解决问题。是不是少了一个步骤?我正在使用 iOS Programming: Big Nerd Ranch Guide 第 6 版,我知道它不是为 Xcode 11 编写的。

【问题讨论】:

如果我理解正确,您可以控制从 swift 文件拖动到情节提要。在这种情况下,您实际上不需要控制拖动,只需从 celsiusLabel 出口左侧的空圆圈拖动到情节提要中的实际 UILabel 即可。或者,您可以尝试控制从情节提要拖动到 swift 文件,然后您将获得您提到的弹出窗口。 【参考方案1】:

当我从转换视图控制器控制拖动到摄氏度标签时,没有任何反应。我没有弹出框让我选择插座 celsiusLabel。

是的,我经常看到这个问题。通常我可以通过拖动不同的方式来解决它。例如,选择标签,在右侧切换到 Connections 检查器,然后从 New Referencing Outlet 旁边的圆圈拖动到大纲中的视图控制器上。现在它可以让您建立连接吗?

【讨论】:

【参考方案2】:

在您的 StoryBoard 中,通过单击顶部显示名称的位置选择 ViewController,然后选择连接检查器(最后一个选项)。你会在插座下看到你的摄氏度标签。从那里的标签空圈拖动到 ViewController 的视图中的标签并连接。

【讨论】:

【参考方案3】:

我也遇到过同样的问题:- 这将通过两种方式解决:-

1) 更改 .swift 文件的名称后,只需清理构建。如果它不允许您创建 outlet,则只需退出 xcode 并再次运行它,它将允许您将 outlet 添加到类中。

2)。在连接检查器中选择引用插座下的圆圈并将其拖到 viewController 以创建控件的插座。

【讨论】:

【参考方案4】:

这通常发生在我移动或重命名文件时。在这些情况下的解决方法是从“编译源”列表中删除该文件,然后重新添加。然后构建(不需要干净的构建)。

【讨论】:

以上是关于无法在新的自定义类 Xcode 11 中连接到 IBOutlet的主要内容,如果未能解决你的问题,请参考以下文章

Xcode 6 大小类中的自定义字体大小无法与自定义字体一起正常工作

无法在 React-Native 中连接到 SQLite

无法在新的 Xcode 版本 13 上运行 React 本机 IOS 应用程序

Cocoapods 无法在新的 m1 mac Big Sur Xcode 上运行

在 Qlik 复制中连接到 Oracle Endpoint 时出错“无法加载 libclntsh.so.11.1”

在自定义视图中连接到 UIButton 的 AddTarget 不起作用。 (斯威夫特 5,iOS)