gpt4 book ai didi

ios - 在我的自定义 View 的 Controller 中创建自定义 IBAction

转载 作者:可可西里 更新时间:2023-11-01 01:18:54 25 4
gpt4 key购买 nike

首先,我不能发布任何代码,但我会尽力描述我的问题。

好的。我创建了一个自定义 Swift View 文件作为 view.xib 并将其加载到我的 view.swift 我加载了那个 Xib。 Xib 是 imageview 之上的一个简单的 label。我可以在我的 view.swift 文件中创建我的 IBOutlet,例如切换图像或更改标签。 view.swift 只是扩展了 UIView

现在我将这个 View 集成到我的 Storyboard 中,它有一个 Controller (我们称之为 otherVC.swift)。现在 otherVC.swift 想要获取 view.swift 被触摸的信息。我尝试设置 IBAction,但没有设置选项,只能在 IBOutlet 上设置。经过一番谷歌后,我发现类 UiControl 具有设置 IBAction 的机制。

所以我 view.swift 不再扩展 UIView,而是扩展 UIControl。之后,我可以创建一个带有触摸事件的 IBAction。 (如触地或触及内部)在模拟器中使用 View 运行应用程序时,我可以单击 View 但不会调用 IBAction。

所以我的问题是如何在其他 VC 中为我的 View 设置一个 IBAction 或者为特定 View 创建我自己的 IBActions

再次..无法发布代码。欢迎使用工作示例的片段或链接

谢谢!

最佳答案

我认为创建自定义 IBAction 会很困难(如果不是不可能的话),但您的问题还有许多其他解决方案,例如委托(delegate)、通知或闭包。我建议您使用闭包,因为在我看来这是最简单的方法。

下面是如何使用闭包实现此目的的示例代码:

class View: UIView {

var someButtonTapped: (UIButton) -> Void = { _ in }

@IBAction private func someButtonTappedAction(_ sender: UIButton) {
someButtonTapped(sender)
}
}

然后在你的 Controller 中添加:

objectOfYourCustomView.someButtonTapped = { (sender: UIButton) in
// Handle action
}

关于ios - 在我的自定义 View 的 Controller 中创建自定义 IBAction,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44845562/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com