从 UICollectionViewCell 传播自定义事件

2024-02-21

我有一个自定义的 UICollectionViewCell,里面有一个按钮。当我点击按钮时,会在该子类中触发一个事件。然后我想在 UICollectionView 本身上触发一个事件,我可以在视图控制器中处理该事件。

伪代码:

class MyCell : UICollectionViewCell {
    @IBAction func myButton_touchUpInside(_ sender: UIButton) {
        // Do stuff, then propagate an event to the UICollectionView
        Event.fire("cellUpdated")
    }
}

class MyViewController : UIViewController {
    @IBAction func collectionView_cellUpdated(_ sender: UICollectionView) {
        // Update stuff in the view controller 
        // to reflect changes made in the collection view
    }
}

理想情况下,我定义的事件将出现在界面生成器中的默认操作出口旁边,然后允许我将其拖动到我的视图控制器代码中以创建上述内容collectionView_cellUpdated功能,类似于@IBInspectable用于公开自定义属性。

有没有办法在原生 Swift 3 中实现这样的模式?或者如果没有,有什么库可以实现这一点吗?


我不完全理解你的问题,但从我得到的情况来看,你可以简单地使用closure通过UIButton点击事件返回UIViewController.

Example:

1. 定制UICollectionViewCell

class MyCell: UICollectionViewCell
{
    var tapHandler: (()->())?

    @IBAction func myButton_touchUpInside(_ sender: UIButton)
    {
        tapHandler?()
    }
}

2. MyViewController

class MyViewController: UIViewController, UICollectionViewDataSource
{
    //YOUR CODE..

    func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell
    {
        let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "cell", for: indexPath) as! MyCell
        cell.tapHandler = {
            //Here you can do your custom handling
        }
        return cell
    }
}

如果您遇到任何问题,请告诉我。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

从 UICollectionViewCell 传播自定义事件 的相关文章

  • Swift 和 Objective-C 框架公开其内部结构

    我正在尝试将 Swift 添加到具有公共 私有和项目文件的现有 Objective C 框架中 为了让 Swift 能够访问项目文件 我添加了一个定义新模块的模块映射 例如MyFramework Internal 通过包含所有项目标题 如下
  • Swift 3 - 如何从另一个视图插入 TableView 单元格?

    我正在使用 Swift 3 Xcode 8 2 我试图弄清楚如何从选项卡式视图控制器的另一个选项卡将单元格插入到表视图中 我的表视图 class MyTableView UITableViewController var items Ite
  • 尝试在 Xcode 中为 OS X 应用程序设置 Tab 键顺序

    我正在使用 Xcode 7 3 构建 OS X 桌面应用程序 并尝试为其中一个表单设置 Tab 键顺序 我发现有几篇文章解释了 Xcode 4 的类似问题 但没有任何进展 https www youtube com watch v SRrE
  • 从 Google/Facebook 帐户重新验证用户身份

    因此 我需要创建一个 REST API 来为 IOS 应用程序提供功能 我们允许用户仅使用普通帐户或使用脸书 谷歌登录 我最近一直在阅读 OAuth 我想我了解在我的情况下如何使用 OAuth 的过程 当用户使用脸书 谷歌登录 在我的应用程
  • 可达性更改通知应仅调用一次

    我在我的 swift 项目中使用了 Reachability 我在 AppDelegate 中有以下代码 NSNotificationCenter defaultCenter addObserver self selector reacha
  • 如何在文本末尾添加按钮,如 Facebook 的“继续阅读”?

    当状态帖子太长时 Facebook 应用程序会剪切文本并在末尾添加 继续阅读 它如何知道在哪里剪切文本并添加 继续阅读 不仅仅是向 textView 或标签添加按钮 而是如何剪切字符串 例如 在下图中 我将行数限制为 7 我可以在 text
  • 为什么快速枚举中的可选项会导致无限循环?

    评估以下代码 我希望打印一次Hello World 相反 它会导致无限循环 有人可以解释为什么吗 let array what for text String in array print Hello World 删除可选的 显然让它只打印
  • 即席分发失败

    我在一家大公司工作 正在开发一个适用于 iOS 5 的 iOS 应用程序 分发应用程序的唯一方式是通过临时部署 我拥有自己的服务器已经有一段时间了 由 o2switch 法国托管商 托管 当我开始开发时 我们使用它来部署应用程序以进行 Be
  • 相机叠加图片

    edit 3 好消息和坏消息 好消息是 在连接检查器中 通过断开覆盖 UIToolbar 并连接 UIImageview 我看到theKing 但是 坏消息 我没有看到我也需要的 UIToolbar 所以现在的问题是 当用户完成这里操作后
  • 取消交互式 UINavigationController 弹出手势不会调用 UINavigationControllerDelegate 方法

    如果拖动 a 的边缘UIViewController开始交互式流行过渡UINavigationController the UIViewController在电流下方有viewWillAppear 调用 然后是UINavigationCon
  • iOS 复合谓词

    我正在编写一个具有照片数据库的应用程序 每张照片都有多个与之关联的标签 并且该应用程序有一个带有大量切换的搜索页面 允许用户仅根据他们感兴趣的标签搜索照片 每个标签都存储了integerID 是因为它们对应于外部数据库的 ID 所以我尝试简
  • UICollectionviewcell 更改背景

    如果我知道部分编号和项目编号 如何更改单元格中的背景 下面的代码显示了我如何尝试做到这一点 UICollectionViewCell collectionView UICollectionView collectionView cellFo
  • 连接到 Apple Music

    所以我尝试使用 React Native 应用程序从 iOS 设备连接到 Apple Music 有一个 API 可以执行相同的操作 但我需要从 storekit 框架调用一个函数 提出个性化请求 苹果音乐API https develop
  • 为什么 iOS 5.0 不喜欢纯窗口应用程序?为什么它要求使用视图控制器?

    我有一个使用 Xcode 4 0 的 基于窗口的应用程序 模板创建的 iOS 应用程序 当时运行良好 并且使用的是 iOS 4 3 SDK 这是一个简单地将按钮 标签等直接放置到窗口上的应用程序 没有视图控制器 什么都没有 但现在我已经升级
  • SDWebImage 显示缓存中图像的占位符

    在 iOS 5 1 项目 iPad 中使用 SDWebImage 3 我们展示相当大的图像 700x500 并且我们有很多图像 1000 我们预取图像并缓存到磁盘 然后允许用户浏览它们 效果很好 除了当您浏览图像时 您总是会看到占位符显示一
  • iOS:addConstraints:应用程序崩溃

    Problem 我似乎无法在现有项目中采用自动布局 Details 我之前也遇到过与此问题相同的问题presentViewController 在 iOS 但所提供的答案都不是我的解决方案 我正在使用所有没有 xib 的故事板视图 我的 使
  • Apple Mach-O 链接器错误 armv7s 和 libGoogleAdMobAds.a

    我刚刚升级了我的应用程序以在新的 iPhone5 模拟器上运行 但是当我尝试为我的 iPhone 4S 设备构建它时 我收到此 Apple Mach O Liner 错误 ld 文件是通用的 3片 但不包含 n armv7s 切片 User
  • extern NSString *const 在类中。

    你好 我有这个头文件 import
  • 您可以严格泛型类型或为一个参数指定多个类型吗?

    例如我想指定一个类型可能是Integer or String并将其用作特殊类型func我试过typealias但它不会解决这个问题 因为类型别名不能有or参数作为其唯一用途 因此请考虑下面的情况 typealias alis StringP
  • NSURLConnection 是否自动保留从服务器发送的 cookie?

    我从 ios 登录到我的龙卷风后端并发回 secure cookie 我注意到只要验证我设置的 secure cookie 我还可以请求其他信息 NSURLConnection 会保留 cookie 多久 或者关闭应用程序后 cookie

随机推荐

  • 使用 PHP、活动目录以及 IE/Firefox 对 ldap 进行身份验证

    下面的代码根据 ldap 检查用户的凭据
  • Tensorflow 不会在 CUDA 支持下构建

    我已经尝试从源代码构建张量流 如安装指南 https www tensorflow org install install sources 我已经成功地使用仅 cpu 支持和 SIMD 指令集构建了它 但在尝试使用 CUDA 支持构建时遇到
  • 在 ARM/Thumb (IOS) 上解码 BLX 指令

    我已经阅读了大部分 ARM 文档 但在解码 BLX 指令时仍然遇到问题 下面是两个例子 text 0000347C 02 F0 B2 ED BLX objc msgSend text 0000469C 01 F0 A2 EC BLX obj
  • 允许机器人访问 Telegram Group 消息[重复]

    这个问题在这里已经有答案了 比之前更进了一步如何将机器人添加到 Telegram 群组 https stackoverflow com questions 37338101 如何以管理员身份将机器人添加到 Telegram 群组 我已将我的
  • “strcpy”和“strcpy_s”之间的区别?

    当我尝试使用时strcpy复制字符串给了我一个编译错误 error C4996 strcpy This function or variable may be unsafe Consider using strcpy s instead T
  • 将数组的元素向左旋转

    我正在尝试解决来自的 JavaScript 挑战杰希罗网 挑战是这样的 编写一个旋转函数来旋转数组的元素 全部 元素应向左移动一位 第 0 个元素 应该放在数组的末尾 旋转后的数组应该是 回 旋转 a b c 应该返回 b c a 我能想到
  • 使用 HDF5 进行大型数组存储(而不是平面二进制文件)是否具有分析速度或内存使用优势?

    我正在处理大型 3D 数组 我经常需要以各种方式对其进行切片以进行各种数据分析 典型的 立方体 可以约为 100GB 并且将来可能会变得更大 看来Python中大型数据集的典型推荐文件格式是使用HDF5 h5py或pytables 我的问题
  • 使用 Visual Studio 2010 Express 将 .doc 保存/转换为 .html

    我有一个 Word 文档文件夹 我想将其转换为 html 以便进一步处理 我只有 Visual Studio 2010 Express 版本 可以使用 Express 版本吗 我找到了如何进行转换的示例 但它们需要 Microsoft Of
  • 如何反转 Julia 中的字典?

    如果我有一本字典 比如 my dict Dict A gt one B gt two C gt three 反转键 值映射的最佳方法是什么 一种方法是使用推导式通过迭代键 值对并一路交换它们来构建新字典 julia gt Dict valu
  • Qt 和 QMake 构建目录

    我想从源代码树中构建 qt 和 qt 应用程序 你知道如何使用configure和qmake从命令行设置 obj目录吗 如果我正确理解问题你应该设置对象目录 http qt nokia com doc 4 5 qmake variable
  • 替换delphi中的组件类

    我知道我在某个地方看到过一个 hack 的例子 用于定义现有 VCL 组件的自定义版本 例如TButton or TEdit 具有相同的类名 并执行一些操作 以便 DFM Streamer 实例化您的版本而不是原始版本 不幸的是 我所处的情
  • Express-session 未在浏览器中设置 cookie

    所以我正在使用express session设置 cookie 和 session 的包 它还连接到我的 MongoDB 存储来存储会话 当用户登录时 会话会很好地存储在数据库中 但是浏览器中没有cookie 我的应用程序正在运行http
  • 如何检查下拉菜单是否被禁用?

    使用 jquery 如何简单地检查它是否是只读的 这就是我正在尝试的 item keydown function event alert event keyCode if event keyCode 13 ok click if dropL
  • 获取内容:找不到路径

    我正在尝试在 PowerShell 中编写一个脚本 该脚本在 foreach 循环中读取名称中包含 example 的特定文件夹中的所有唯一文件 问题是我试图将每个文件的内容保存在变量中但没有成功 尝试使用获取内容 file它会抛出以下错误
  • 从 PHP 创建 MySQL 用户和数据库

    有没有办法使用 PHP 创建一个新的 MySQL 数据库 一个新的 MySQL 用户并授予新用户对新数据库的权限 EDIT 应该指出 这是从一台服务器运行到另一台服务器 因此服务器 A 尝试在服务器 B 上安装数据库 用户 我有这个 con
  • fetch 给出一个空的响应主体

    我有一个 React Redux 应用程序 我正在尝试向服务器发出一个简单的 GET 请求 fetch http example com api node mode no cors method GET headers Accept app
  • 如何使用 Corda Vault Extension 创建自定义架构

    从 Corda 文档来看 我们可以在 Vault Extension 中拥有自定义架构 然而 Vault Extension 并没有太多明确性 它应该能够创建 管理与节点Vault数据库相关的自定义数据库模式 我们是否会在 Corda 的功
  • App Engine Flex 的默认 VPC 防火墙规则是什么

    我在一个 App Engine 灵活环境项目中部署了一些服务 服务实例在同一个 VPC 网络 非默认 中运行 该网络在其指定的 VPC 网络中指定 app yaml文件和分配的 IP 地址来自同一子网 默认情况下 这两个服务都可以从外部访问
  • aspx页面重定向到新页面

    将浏览器重定向到包含 ASPX 页面的新页面所需的代码是什么 我在我的页面 default aspx 上尝试过此操作 or 这些导致了未确定的服务器错误 我看不到错误代码 因为服务器不在我的控制范围内 错误也不公开 请提供从页面第一行到末尾
  • 从 UICollectionViewCell 传播自定义事件

    我有一个自定义的 UICollectionViewCell 里面有一个按钮 当我点击按钮时 会在该子类中触发一个事件 然后我想在 UICollectionView 本身上触发一个事件 我可以在视图控制器中处理该事件 伪代码 class My