gpt4 book ai didi

ios - Swift:从 View 中获取值(value)的最佳方式

转载 作者:行者123 更新时间:2023-11-28 13:18:09 25 4
gpt4 key购买 nike

我有一个自定义 UIView(称为 GridView),我对其进行了初始化,然后将其添加到 ViewController (DetailViewController)。 GridView 包含几个 UIButtons,我想在 DetailViewController 中知道这些按钮何时被触摸。我是 Swift 的新手,想知道获取这些事件的最佳模式是什么?

最佳答案

如果您想对通知执行此操作,请使用 1 :

func postNotificationName(_ notificationName: String,
object notificationSender: AnyObject?)

在您的按钮触发的方法中。然后,在您的 DetailViewController 中,在使用 2 初始化时添加一个监听器:

func addObserver(_ notificationObserver: AnyObject,
selector notificationSelector: Selector,
name notificationName: String?,
object notificationSender: AnyObject?)

这两个函数都可以从 NSNotificationCenter.defaultCenter() 调用。

另一种方法是在初始化 DetailViewController 中的 GridView 后添加回调。回调本质上是一个闭包:

var callback : (() -> Void)?

您可以在需要时实例化,例如

// In DetailViewController initialization
gridView = GridView()
gridView.callback = { self.doSomething() }

GridView 中,您可以像这样触发回调:

func onButton()
{
callback?()
}

回调只会在解包成功时执行。请确保您已阅读 Automatic Reference Counting ,因为这些构造可能会导致强引用循环。

有什么区别?您只能连接一次回调(至少使用我在此处展示的方法),但当它触发时,接收方会立即执行其代码。对于通知,您可以有多个接收者,但事件传递会有一些延迟。

关于ios - Swift:从 View 中获取值(value)的最佳方式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28039956/

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