首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

在没有IBOutlet的情况下使用带有UIButton的IBActions

在没有IBOutlet的情况下使用带有UIButton的IBActions,可以通过以下方法实现:

  1. 使用UIButton的addTarget方法

在你的UIViewController中,你可以使用UIButton的addTarget方法来添加一个事件处理程序,如下所示:

代码语言:swift
复制
let button = UIButton(type: .system)
button.setTitle("点击我", for: .normal)
button.frame = CGRect(x: 100, y: 100, width: 100, height: 50)
button.addTarget(self, action: #selector(buttonClicked), for: .touchUpInside)
self.view.addSubview(button)

然后,你需要在你的UIViewController中实现buttonClicked方法,如下所示:

代码语言:swift
复制
@objc func buttonClicked(sender: UIButton) {
    print("按钮被点击了")
}
  1. 使用闭包

你还可以使用闭包来实现UIButton的点击事件处理程序,如下所示:

代码语言:swift
复制
let button = UIButton(type: .system)
button.setTitle("点击我", for: .normal)
button.frame = CGRect(x: 100, y: 100, width: 100, height: 50)
button.addTarget(self, action: #selector(buttonClicked), for: .touchUpInside)
self.view.addSubview(button)

button.handleControlEvent(.touchUpInside) { [weak self] sender in
    guard let self = self else { return }
    print("按钮被点击了")
}

在这个例子中,我们使用了一个名为handleControlEvent的方法,它接受一个UIControl.Event枚举值和一个闭包作为参数。这个方法的实现如下所示:

代码语言:swift
复制
extension UIControl {
    func handleControlEvent(_ event: UIControl.Event, closure: @escaping (UIControl) -> Void) {
        let sleeve = ClosureSleeve(closure: closure)
        addTarget(sleeve, action: #selector(ClosureSleeve.invoke), for: event)
        objc_setAssociatedObject(self, String(ObjectIdentifier(self).hashValue) + String(event.rawValue), sleeve, objc_AssociationPolicy.OBJC_ASSOCIATION_RETAIN)
    }
    
    private class ClosureSleeve {
        let closure: (UIControl) -> Void
        
        init(closure: @escaping (UIControl) -> Void) {
            self.closure = closure
        }
        
        @objc func invoke(sender: UIControl) {
            closure(sender)
        }
    }
}

这个方法使用了一个名为ClosureSleeve的私有类,它包含一个闭包,并且可以将闭包转换为一个Selector,这样就可以将闭包作为UIButton的事件处理程序。

通过以上两种方法,你可以在没有IBOutlet的情况下使用带有UIButton的IBActions。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

按钮与交互-使用按钮触发操作

本节中,我们将介绍一个重要且简单元素,即按钮。这个小元素可以改变整个UX。我们将使用该按钮来缩放我们3D模型。此外,我们将尝试更改手机壁纸。...设置页面中,将显示名称更改为角度AR或所需名称。资产目录中,将应用程序图标从assets文件夹拖放到选定插槽中。 主要故事板 我们屏幕上放置一些按钮。...通过单击右上角带有双圆圈图标启用助理编辑器。您将看到我们同时拥有主故事板和代码。swift文件中,您将看到一个与之前ARSCNView链接IBOutlet。...IBActions 类变量 2个第一个按钮目的是能够调整我们3D模型大小。问题是iPhoneNode声明是渲染器方法局部变量。...到目前为止,您可以使用按钮执行许多令人惊叹事情。 原文: https://designcode.io/arkit-buttons

4.5K20

没有 Mimikatz 情况下操作用户密码

渗透测试期间,您可能希望更改用户密码常见原因有两个: 你有他们 NT 哈希,但没有他们明文密码。将他们密码更改为已知明文值可以让您访问不能选择 Pass-the-Hash 服务。...一旦离线,Mimikatz可以不被发现情况下使用,但也可以使用Michael Grafnetter DSInternals 进行恢复。...然后可以使用带有-just-dc-user和-history标志Impacketsecretsdump.py对 esteban_da 帐户执行 DCSync 。...使用 Impacket 重置 NT 哈希 撰写本文时,存在两 (2) 个对Impacket主动拉取请求。...使用 Impacket 重置 NT 哈希并绕过密码历史 PR 1171 奖励:影子凭证 我们是否需要重置 esteban_da 密码才能控制它?答案实际上是否定,我们没有

1.9K40

没有数据情况下使用贝叶斯定理设计知识驱动模型

但在进入 CPT 之前,让我们首先使用 bnlearn 制作 DAG。 基于一对一关系DAG 这四个有向关系现在可以用来构建带有节点和边图来表示。...总的来说,我们需要指定4个条件概率,即一个事件发生时另一个事件发生概率。我们例子中,多云情况下下雨概率。因此,证据是多云,变量是雨。...这里我们需要定义多云发生情况下喷头概率。因此,证据是多云,变量是雨。我能看出来,当洒水器关闭时,90%时间都是多云。...洒水器关闭情况下,草地湿润可能性有多大? P(Wet_grass=1 |Sprinkler=0)= 0.6162 如果洒器停了并且天气是多云,下雨可能性有多大?...所使用知识和专家经验一样丰富并且和专家一样带有偏见 换句话说,我们通过询问专家得到概率是主观概率[5]。

2.1K30

V-3-3 没有vCenter情况下

使用vSphere客户端登陆到ESXi服务器时候,由于没有安装vCenter,而发现无法克隆虚拟机。...在有vCenter情况下,可以创建一个模板虚拟机后,右键直接克隆一台虚拟机。或者将虚拟机转换为模板后,以模板创建虚拟机。...如果没有vCenter而现在要创建多台相同虚拟机时候可以使用模板来创建虚拟机。 这里说到一个情况是没有VCenter和模板情况下,如何快速复制多台相同虚拟机。...进入需要复制模板虚拟机,选中所有的文件并且右键复制。 ? 文件夹中粘贴。 提示:可以进入ssh界面,通过命令行进行复制。...存储路径如图,为: /vmfs/volumes/datastore1/下。使用命令cp –r来复制需要复制虚拟机。 ? 复制完虚拟机后,进入新虚拟机文件夹右键vmx文件,添加到服务器清单。

1K20

没有 try-with-resources 语句情况下使用 xxx 是什么意思

没有使用 try-with-resources 语句情况下使用 xxx,意味着代码中没有显式地关闭 xxx对象资源,如果没有使用 try-with-resources,那么使用xxx对象后,需要手动调用...= null) { client.close(); }}方式二:'try' 可以使用自动资源管理 try 可以使用自动资源管理是指在 Java 7 引入 try-with-resources...使用 try-with-resources 语句时,可以 try 后面紧跟一个或多个资源声明,这些资源必须实现了 AutoCloseable 或 Closeable 接口。... try 代码块执行完毕后,无论是否发生异常,都会自动调用资源 close() 方法进行关闭。...使用 try-with-resources 可以简化资源释放代码,并且能够确保资源使用完毕后得到正确关闭,避免了手动关闭资源可能出现遗漏或错误。

1K30

Exce中使用带有动态数组公式切片器

如下图2和图3所示,使用SUBTOTAL函数统计可见行数, 图2 图3 单元格B9中公式为: =SUBTOTAL(103,表1) 公式中,参数103告诉SUBTOTAL统计时忽略隐藏行。...现在,在上面列表旁添加一个名为“标志”列,并为每一行使用SUBTOTAL函数,对于每个可见行返回1,如下图4和图5。...图4 图5 单元格C3中公式为: =SUBTOTAL(103,[@示例列表]) 创建切片 选择表中任意单元格。单击功能区“插入”选项卡“筛选器”组中“切片器”。...“插入切片器”对话框中选择所需要列,如下图6所示,单击“确定”。 图6 结果如下图7所示。 图7 此时,单击切片器,将筛选列表数据。...将切片器连接到公式 使用FILTER函数来仅返回表中可见行,即“标志”列为1行,如下图8所示。

26110

学习Python与Excel:使用xlwt没有Excel情况下编写电子表格

例如,使用xlwt。 首先,使用pip命令终端安装xlwt: pip install xlwt 下面是一个示例。...原始文本文件数据如下: 09700RESEARCH 09800PHYSICIANS PRIVATE OFFICES 09900NONPAID WORKERS MANAGEMENT FEES REFERENCE...LABS 原始数据被搅和在一起,账号和类别没有分开,有些数据甚至没有账号。...图1 要创建这样输出,代码脚本执行以下操作: 1.分隔帐号和名称 2.分配一个99999帐号,并将未编号帐号单元格颜色设置为红色 3.将帐户名转换为正确大写名称 4.删除帐户名中任何多余空格...5.将账号和姓名写入电子表格中两列 6.根据最宽数据宽度设置每个电子表格列列宽格式 代码如下: import sys import re from xlwt import Workbook, easyxf

1.7K20

NeurIPS 2023 | 没有自回归模型情况下实现高效图像压缩

模型 整体架构 图1 本文方法与现有工作相结合示意图 图1是现有的工作中使用本文相关性损失示意图,左图是与基本超先验结构相结合,右图是与Checkerboard模型相结合。...相关性损失计算 本文提出相关性损失通过潜在空间中使用滑动窗口计算得到。...在这个窗口内,首先使用预测得到 μ 和 σ 对 y 进行标准化,然后计算中心点 m 与窗口中其他点相关性。整个潜在空间上以步长1滑动窗口,即可得到每个中心点相关性。...(4) 中给出损失函数进行训练,具有相关性损失模型使用公式 (5) 中修改后损失函数进行训练。...实验表明,本文所提出方法不修改熵模型和增加推理时间情况下,显著提高了率失真性能,性能和计算复杂性之间取得了更好 trade-off 。

24510

不影响程序使用情况下添加shellcode

参考 文章Backdooring PE Files with Shellcode中介绍了一种正常程序中注入shellcode方式,让程序以前逻辑照常能够正常运行,下面复现一下并解决几个小问题。...; return 0; } 编译后exe,可以使用CFF Explorer查看相关信息。...文件前后各插入20-40个字节,以90填充 目标exe中添加一个新代码段,将bin内容导入,并设置可读、可写、可执行、包含代码等属性标志 更新header大小以及重建PE头 使用x32dbg调试...PE头大小是和最终PE头大小是一致,检查第4步操作 每次调试exe时候,基址可能会发生变化,所以复制指令只能用于修改当前调式实例 复制jmp指令机器码时候,注意不要和目标跳转位置太近,会复制成短地址指令...问题3:监听端失联情况下,程序长时间阻塞后程序终止 应该是检查服务端失联情况下直接终止程序了,通过调试找到终止位置nop掉即可 ?

94910

谷歌AI没有语言模型情况下,实现了最高性能语音识别

谷歌AI研究人员正在将计算机视觉应用于声波视觉效果,从而在不使用语言模型情况下实现最先进语音识别性能。...研究人员表示,SpecAugment方法不需要额外数据,可以不适应底层语言模型情况下使用。 谷歌AI研究人员Daniel S....Park和William Chan表示,“一个意想不到结果是,即使没有语言模型帮助,使用SpecAugment器训练模型也比之前所有的方法表现得更好。...虽然我们网络仍然从添加语言模型中获益,但我们结果表明了训练网络没有语言模型帮助下可用于实际目的可能性。” ?...自动语音识别(ASR)系统将语音翻译成文本,用于会话式AI,如家庭智能扬声器中谷歌智能助手或使用Gboard电子邮件,或安卓智能手机短信听写工具。

87470

神兵利器 - 没有任何权限情况下破解任何 Microsoft Windows 用户密码

使用命令找出哪些用户存在:net user 这个 PoC 使用多线程来加速进程并支持 32 位和 64 位。...PoC 测试场景(使用访客账户) Windows 10 上测试 安装和配置新更新 Windows 10 虚拟机或物理机。...情况下,完整 Windows 版本是:1909 (OS Build 18363.778) 以管理员身份登录并让我们创建两个不同帐户:一个管理员和一个普通用户。两个用户都是本地用户。 /!...默认情况下,域名是%USERDOMAIN%env var 指定值。...实施安全锁定策略(默认不存在) 打开secpol.msc然后转到Account Policies>并使用(1 到 999)之间所需值Account Lockout Policy编辑值。

1.5K30

没有技术术语情况下介绍Adaptive、GBDT、XGboosting等提升算法原理简介

假设你正在准备SAT考试,考试分为四个部分:阅读、写作、数学1(没有计算器)、数学2(没有计算器)。为了简单起见,假设每个部分有15个问题需要回答,总共60个问题。...但通常我们将max_depth限制6到8之间,以避免过拟合。Gradientboost不使用树桩,因为它没有使用树来检测困难样本。它构建树来最小化残差。...我确实想强调XGboost和Gradientboost之间一个关键区别。Gradientboost中,我们计算每个样本残差后,选取一个节点进行分割,然后继续使用传统方法构建树。...它没有使用预估器作为树节点。它构建树来将残差进行分组。就像我之前提到,相似的样本会有相似的残值。树节点是可以分离残差值。...然而,当我们有一个合理数量样本,比如几千个,Gradientboost实际上是更健壮。所以一些小数据集时候我们可以首先使用Gradientboost。

82110

没有abi文件情况下调用智能合约方法,web3py实现

确定函数调用签名 也就是 0xb45112b2 区块链中合约代码执行,需要指定某个合约地址某个函数,其中这个执行函数是使用 Keccak-256(SHA-3)编码后散列,取散列前四个字节作为函数签名...官方定义:"签名被定义为没有数据位置说明符基本原型规范表达式,即具有带括号参数类型列表函数名称"。...1,搜索网上签名数据库:https://www.4byte.directory/signatures/ 搜索结果如下: 说明还没有上传函数 abi 定义 2,没有函数 abi 信息,就没办法调用了吗...使用时候,address 为合约地址 greeter = w3.eth.contract( address='0xB5816B1C17ce9386019ac42310dB523749F5f2c3...2,自己修改 webpy 代码,支持签名替换 我开源代码里面提供了,修改过,contract.py[4]替换即可使用。github 上有修改说明。

2.2K30

【iOS 开发】基本 UI 控件详解 (UIButton | UITextField | UITextView | UISwitch)

UIButton 就是这种控件; -- 静态控件 : 继承了 UIView 基类, 该类控件与用户之间不能交互, 之前使用 UILabel 就是这种控件; -- 被动控件 : 该类控件可以接受用户操作...UIControl 介绍 (1) UIControl 简介 UIControl 简介 :  -- 使用频率 : UIControl 控件一般不会被使用, 经常被使用是 UIControl 子类 UI...; 为不同状态 UIButton 设置样式 :  -- "setTittle : forState :" 方法 : UIButton 不同状态 设置不同标题; -- "setTittleColor...; (2) Border Style 属性 Border Style 属性 : 设置文本框边框风格, 支持四种风格, 一般情况下是选择最右边圆角矩形按钮; (3) Clear Button 属性...resignFirstResponder]; } @end -- 展示效果 : 点击 Done 即可关闭按钮; (4) 自定义键盘附件关闭虚拟键盘 自定义键盘附件 :  -- 作用 : 不是所有的应用都有导航栏, 没有导航栏应用中

6.4K20

尽量减少网站域名没有启用 CDN 情况下各种检测、扫描、测速等操作

今天明月给大家分享个比较可怕事儿,那就是轻松获取你站点服务器真实 IP 途径和办法,很多小白站长不知道自己服务器真实 IP 重要性,因此一些不好习惯就会暴露你真实 IP 到网上,从而造成被各种恶意扫描和爬虫抓取骚扰...这个原理其实很简单,就是通过获取你域名解析记录来侧面获取到你真是 IP,有不少第三方代理就可以扫描你域名来获取到这些数据,不说是百分百准确吧,至少有 80%概率可以,通过明月分析,这些数据大部分依赖于平时网上各种所谓...SEO 分析平台、互换友链平台等等,甚至不少测速平台数据都会被利用到,像有些所谓安全检查扫描一类也会获取到这里数据。...这几乎是一种没有任何成本和技术门槛手法就可以轻松获取到服务器真实 IP 了,这也再次说明了给自己站点加个 CDN 来隐藏真实 IP 重要性,甚至可以说没有 CDN 情况下,尽量不要去检测自己域名速度...、SEO 信息查询等等操作,至于那些所谓交换友链、自动外链所谓 SEO 插件就更要远离了,基本上明月碰到没有几个是正常,总之各位是要小心谨慎了!

1K20

研究人员开发机器学习算法,使其没有负面数据情况下进行分类

来自RIKEN Center高级智能项目中心(AIP)研究团队成功开发了一种新机器学习方法,允许AI没有“负面数据”情况下进行分类,这一发现可能会在各种分类任务中得到更广泛应用。...当使用AI时,这些任务基于机器学习中“分类技术”, 让计算机使用正负数据边界进行学习,如“正面”数据将是带有幸福面孔照片,“负面”数据是带有悲伤面部照片。...他们成功地开发了一种方法,可以让计算机只从正面的数据和信息中学习边界分类,从而对机器学习分类问题进行正面和负面的划分。 为了了解系统运作情况,他们一组包含各种时尚商品标记照片上使用它。...然后他们“T恤”照片上附上了置信分数。他们发现,如果不访问负面数据,某些情况下,他们方法与一起使用正面和负面数据方法一样好。 Ishida指出,“这一发现可以扩展可以使用分类技术应用范围。...即使正面使用机器学习领域,我们分类技术也可以用于新情况,如由于数据监管或业务限制数据只能收集正面数据情况。

76640
领券