如何在不使用助手编辑器的情况下将 IBOutlet 和 IBAction 连接到视图控制器

Posted

技术标签:

【中文标题】如何在不使用助手编辑器的情况下将 IBOutlet 和 IBAction 连接到视图控制器【英文标题】:How to connect an IBOutlet and IBAction to a View Controller without using the Assistant editor 【发布时间】:2015-09-12 03:38:54 【问题描述】:

我知道这里的第二个按钮显示了助理编辑器:

而且我知道如何通过从 Interface Builder 中的对象拖动到 View Controller 代码来制作 Outlet 和 Action。理想情况下,它应该像 documentation 看起来一样简单:

但这通常是我按下“Assistant”编辑器时 Xcode 的实际外观:

混乱。我必须尽量减少很多事情,尝试让故事板对象出现在视图中,然后找到合适的视图控制器。所有这一切都在我可以进行 Control 拖动之前完成。

有没有办法在不使用助手编辑器的情况下建立连接? (最好不用自己输入大量代码。)

【问题讨论】:

【参考方案1】:

不要按助理编辑器按钮。有时它会打开一个随机文件而不是您想要的文件。

当您在 Storyboard 中时,选项单击要在项目导航器中打开的 .h 文件。这将打开正确的 .h 文件以添加出口或操作。

完成后,关闭助手编辑器右窗格(显示 .h 文件),您将返回 Storyboard。

【讨论】:

非常有用的提示。我会用这个和另一个答案玩一会儿,看看哪个更快,需要更少的机动。 @Suragch 另一种选择是以编程方式完成所有操作,但是您必须在 VFL 中而不是在情节提要中进行自动布局。使用 Storyboard,您必须处理设置 VC 的类和上述问题,但是您具有将视图元素拖到屏幕上的功能。这仅取决于哪种方式对您来说总体上不那么痛苦。【参考方案2】:

是的,您可以在没有助手编辑器的情况下完成此操作,并且无需编写大量代码。它需要学习做两件事:

    使用代码 sn-ps 使用连接检查器

为 IBOutlet 和 IBAction 创建代码 sn-ps

通常,当您使用助手编辑器创建 IBOutlet 和 IBAction 时,它会自动将如下代码添加到您的视图控制器:

@IBOutlet weak var myOutletName: UIButton!

@IBAction func myActionName(sender: AnyObject) 

您可以自己输入所有内容,然后在连接检查器中添加连接,但为什么要输入所有内容?只需制作一个将自动完成的代码 sn-p 即可。将代码拖到 Utility 面板中的 Code Snippets 库中。

给它一个标题,最重要的是,一个完成快捷方式。我将@IBAction 代码称为我的“ibaction”。

现在我要做的就是开始输入“ibaction”,然后我可以自动完成代码 sn-p。我只需要编辑动作的名称。奥特莱斯的流程与此类似。

阅读有关创建代码 sn-ps 的更多信息:

Xcode Snippets Creating a Custom Code Snippet

现在您所要做的就是将 IB 对象连接到代码。

与连接检查器建立连接

首先,单击情节提要中要连接的对象。对我来说,我使用的是 Button。

然后选择连接检查器。它在最右边。

或者,您可以右键单击或控制单击对象以获取菜单。

然后点击 New Reference Outlet 将其连接到您的 Outlet 或点击 Sent Events 下的 Touch Up Inside 将其连接到您的 Action。

无论出于何种原因,我发现有时我需要在单击“+”按钮后稍微拖动一下才能显示可用连接的菜单。

【讨论】:

以上是关于如何在不使用助手编辑器的情况下将 IBOutlet 和 IBAction 连接到视图控制器的主要内容,如果未能解决你的问题,请参考以下文章

如何在不重新加载页面的情况下将用户重定向到 redux saga 上的另一个页面

如何在不制作 IBOutlet 的情况下以编程方式在 Swift 中为 UIView 高度约束设置动画?

如何在不使用 InterfaceBuilder 的情况下将 UISwitch(切换开关)添加到 UIToolBar

如何在不使用任何付费工具的情况下将 dbf 文件导入 mysql?

如何在不使用 ToString() 的情况下将 Int 转换为 C# 中的字符串?

如何在不使用 span 标签的情况下将颜色赋予 *