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

Swift 4:以编程方式创建的按钮addTarget在委托类中崩溃

Swift 4是一种编程语言,它是苹果公司开发的一种面向对象的编程语言,用于iOS、macOS、watchOS和tvOS应用程序的开发。它具有简洁、安全、高效的特点,并且易于学习和使用。

在Swift 4中,可以使用addTarget方法来为按钮添加一个动作(action)。这个方法用于将按钮的点击事件与一个特定的方法关联起来,当按钮被点击时,关联的方法将被调用。

然而,在委托类中使用addTarget方法时,有时可能会导致崩溃。这通常是因为委托类没有正确实现关联的方法,或者方法的签名不匹配导致的。

为了解决这个问题,我们可以按照以下步骤进行排查和修复:

  1. 确保委托类中实现了关联的方法,并且方法的签名与addTarget方法的要求一致。方法应该接受一个参数,通常是一个UIButton对象,用于处理按钮点击事件。
  2. 检查委托类中是否正确设置了按钮的target属性。target属性应该指向委托类的实例。
  3. 确保按钮的action参数正确设置为关联方法的选择器(selector)。选择器应该是一个字符串,指定关联方法的名称。
  4. 检查是否存在其他可能导致崩溃的代码或逻辑错误。例如,可能存在内存管理问题或其他与按钮交互相关的问题。

如果以上步骤都没有解决问题,可以尝试使用调试工具来定位和解决崩溃问题。例如,可以使用Xcode的调试器来跟踪代码执行过程,并查看具体的错误信息和堆栈跟踪。

对于Swift 4中使用addTarget方法崩溃的具体原因,没有提供足够的上下文信息,因此无法给出更具体的解决方案。如果提供更多相关的代码或错误信息,我可以提供更准确的帮助。

关于腾讯云的相关产品和产品介绍链接地址,由于要求不能提及具体的云计算品牌商,我无法给出具体的推荐。但是,腾讯云提供了丰富的云计算服务和解决方案,包括云服务器、云数据库、云存储、人工智能等。您可以访问腾讯云的官方网站,了解更多关于这些产品和服务的详细信息。

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

相关·内容

Swift-MVVM 简单演练(一)

) 设置子控制器 HQMainViewController设置四个子控制器 用extension将代码拆分 通过反射机制,获取子控制器名,创建子控制器 设置每个子控制tabBar图片及标题 HQMainViewController...通过增加tabBarItem方式,给中间留出一个+按钮位置 自定义一个UIButton分类HQButton+Extension,封装快速创建自定义按钮方法 HQButton.swift extension...控制器setupUI(设置界面)方法里面,我们直接创建了tableView,那么我们如果有一个标记,能根据这个标记来选择是创建普通视图,还是创建访客视图。就可以很好解决此类问题了。...则可以直接通过addTarget方式为该视图中按钮添加监听方法 这样做代价是耦合度高,控制器和视图绑定在一起,但是省略部分冗余代码 ---- 调整未登录时导航按钮 如果单纯setupVistorView...字典转模型逻辑 上拉 / 下拉数据处理逻辑 下拉刷新数据数量 本地缓存数据处理 初体验 因为MVVMswift中都是没有父,所以先说下关于父选择问题 如果分类需要使用KVC或者字典转模型框架设置对象时

10.2K51

36.Swift学习之Associated Object

介绍 Swift 可以利用 OC runtime 和 KVC ,在运行时向一个对象添加值存储,这种方式称之为Associated Object。...使用 extension 扩展现有功能时,使用Associated Object方式,可以将一个值 “关联” 到已有的要扩展上。该知识点在 iOS 开发中使用往往能优雅地解决很多问题。...,并且通过 & 操作符取地址并作为 UnsafeRawPointer 类型被传入,这在 Swift 与 C 协作和指针操作时是一种很常见用法。...((UIButton)->Void){ block(button) } } } UIButton 传参 项目开发,经常会有类似九宫格菜单按钮,每个按钮点击时参数是不一样...,此时可以有如下几种方案: 创建 9 个按钮,逐一设置 通过 for 创建 9 个 UIButton,为 UIButton设置不同tag,然后点击事件里面用 switch case判断 自定义UIButton

2.1K20

Travis CI 教程:入门

即使您项目是 Swift ,Travis 也只使用该 objective-c 值来了解使用 Xcode 命令行工具进行构建。...由于 Xcode 知道如何分辨 Swift 内容以及 Objective-C 内容,因此您 Swift 项目会很好。...:] 使用 Xcode 6.4 工具来创建构建,因为您使用Swift 1.2。目前,这需要指定您要使用 VM 映像 - 本例 xcode6.4。 使用指定 Xcode 项目文件。...对于要传递任务状态更改单元,它将需要对任务引用和委托将更改传达给。插座下面添加这两个项目的变量: var currentTask: Task?...您可以从 Travis 日志获得大量信息,但是如果没有设置脚本以构建完成后将其上载到第三方服务,则无法获取崩溃日志。 . 所有测试都在模拟器上运行。

4.9K20

Protocol与Delegate 使用方法详解你要知道KVC、KVO、Delegate、Notification都在这里

,规定一系列实现应该遵守方法,OCprotocol协议远没有Javainterface使用频率高,毕竟在Java面向接口编程更加盛行,但OC使用较频繁代理模式delegate就是以protocol...,扩展是NSObject,接着定义了Bird,该类继承自NSObject,因此也继承了fly方法,Bird实现实现了fly方法,因此main函数可以通过NSObject来调用fly方法...接下来就叫介绍代理模式也称为委托模式delegate,代理模式顾名思义就是让其他代理当前来执行一些任务,实现方式就是要依托协议protocol,定义一系列方法,如果某个对象想成为其代理则需要去实现该协议方法...这是一个实际开发中比较常见场景,能够实现这个功能方法也有很多,比如:创建B视图让其持有A视图弱引用,并提供一个函数用于修改标签数据,B视图在用户点击按钮后调用该方法然后再退出视图。...还有一种是数据源dataSource,对象需要从委托对象获取数据,此时代理协议声明方法就会有返回值,有时也会传递一定形参通知委托对象返回什么样数据。数据流向如下图所示: ?

99890

IOS开发之自定义Button(集成三种回调模式)

这个Button继承于UIView封装时候用上啦OC三种回调模式:目标动作回调,委托回调,Block回调。...继承于UIView, 我们就在MyButton自定义我们button.下面要为自定义Button添加目标动作回调接口,步骤如下:       1.MyButton.h声明目标动作注册方法:...]; 二、委托回调     1.在上面的基础上添加上委托回调,通过委托回调添加按钮是否可用,按钮将要点击和按钮点击后事件,首先我们得有协议来声明这三个方法。...touchesEnded相应位置添加如下代码去执行按钮点击时要回调方法: 1 //点击结束要调用myButtonDidTap 委托回调 2 if ([self.delegate...(@"我是Delegate: Did"); 18 }   三.Block回调     1、为我们按钮添加Block回调(把上面的委托回调改成Block回调),和之前微博CellBlock回调类似

1.1K80

【从零开始用Swift开发一个iOS应用(仿微博)】开篇-1. demo上手体验

二、代码实现 2.1 程序入口说明 Application/AppDelegate.swift文件@UIApplication注解,表示这个Class是程序入口 ?...2.3.2 添加一个按钮,并添加按钮点击事件监听方法 // 2.创建一个按钮 let btn = UIButton(type: .contactAdd) // 2.1 添加到当前视图 v.addSubview...事件方法输出日志 效果如下所示,一个按钮左上角,点击按钮将会输出日志 ?...三、上述示例swift与object-c语法对比 3.1 创建视图类比 - Swift: UIView(XXX:) - OC: [[UIView alloc] initWithXXX:] 名()...如下图所示,我注释添加了MARK、TODO、FIXME标签前缀,这些特殊标记锚点菜单将会显示导航栏上,点击菜单即可跳转到对应注释地方,非常方便。 ?

3.7K31

Swift| 基础语法(五)

前言 总结下 swift基础语法,里面涉及到:常量&变量、Swift数据类型、逻辑分支、循环、字符串相关、数组和字典、方法书写调用等内容,考虑到阅读体验分多篇来展示,希望对大家学习swift...// 程序将创建UIWindow对象赋值给该程序委托对象window属性 self.window = UIWindow(frame:rect) // 创建ViewController...} Swift创建tableViewCell方法可以分为两种创建tableView时候注册和需要使用时手动创建。先聊聊创建tableView时候直接注册cell: myTb?....因为只有init()是私有的,才能防止其他对象通过默认构造函数直接创建这个对象,确保你单例是真正独一无二。...因为Swift,所有对象构造器默认都是public,所以需要重写你init让其成为私有的。 这样就保证像如下代码编译报错,不能通过。 六、从相册选择照片或者拍照 ?

2K30

【iOS 开发】iOS 开发 简介 (IOS项目文件 | MVC 模式 | 事件响应机制 | Storyboard 控制界面 | 代码控制界面 | Retina 屏幕图片适配)

; -- System Italic : 系统默认斜体字; (4) Alignment 属性 Alignment 属性 :  -- 作用 : 设置对齐方式, 左对齐, 居中对齐, 右对齐; (5)...; -- 实际编程对象 : 虽然 UIApplication 代表了整个应用, 但是编程时不直接操作 UIApplication, 开发者一般与 delegate 委托对象交互; -- 全局变量 : UIApplication...文件 : 按住 control 键不放, 将按钮拖动到 UIViewController ; -- 设置 IBAction 属性 : 接下来弹出对话框 Connection 列表设置 为...扩展 : 扩展是匿名类别, 扩展也要定义 已有+任意名.h , 实现 已有.m 需要实现 已有接口中内容, 也需要实现扩展定义抽象. */ // OCViewController...: Custom Class 属性, 输入自定义, 然后点击回车, 默认 View 就会变成我们设置自定义; -- 演示效果 :  六.

4.9K30

Swift封装 - 计算器开发

现在把代码放上来,通过这个计算器,可以学习简单封装:将逻辑与界面分离并提供接口编程方式,这也是我们学习面向对象必要点。...基于 xcode 9.0 swift4.0 一、先引用SnapKit框架 SnapKit自己看git引入 利用其来约束组件 二、新建一个继承UIButton文件,命名为DWFuncButton...UIView,命名为DWBoard,将其用作计算器操作面板 首先引入SnapKit框架 import SnapKit 先创建一个数组属性,存放操作面板上所有功能按钮标题 var dataArray...//进行功能按钮循环创建 for index in 0..<20 { //创建一个功能按钮 let btn = DWFuncButton() self.addSubview...} DWBoard添加一个代理属性: var delegate:DWBoardButtonInputDelegate修改DWBoard点击事件 @objc func btnClick(_ button

1.2K50

30DaysOfSwift - Day1 计时器

前几天逛Github,偶然看到一个Swift项目 —— 30DaysOfSwift,作者一共用30个小项目,来熟悉Swift语言,而我正好也学习了一段时间Swift语言,准备仿照这样模式,来更加深入了解...UI部分 今天做是一个计时器项目 作者在这个项目中,使用AutoLayout来完成自动布局,使用StoryBoard完成UI创建。...而我一直都是喜欢用纯代码布局,UI搭建也是使用代码完成。所以我写这个小Demo之前项目里集成了SnapKit,使用类似Objective-C中常用masonry框架来完成自动布局。...这里我还发现一个Swift小问题,使用cocoadPods集成第三方库,引用不到头文件解决方法和Objective-C不一样。...这是第一个Swift小Demo,很简单,也很好帮助熟悉UI. import UIKit import SnapKit let SCREEN_WIDTH = UIScreen.mainScreen()

78640

ReactiveCocoa,最受欢迎iOS函数响应式编程库(2.5版),没有之一!

ReactiveCocoa通常简称为RAC.RAC,不再使用变量,而是使用信号( RACSignal为代表)来捕捉现在和未来数据或视图值.....RAC 可以支持signales信号和操作方式来表达派生属性. // 创建一个单向绑定, self.password和self.passwordConfirmation 相等 // 时,self.createEnabled...,不仅仅是KVO.例如说,他们可以用来表示一个按钮点击事件: // 任意时间点击按钮,都会打印一条消息. // // RACCommand 创建代表UI事件signals信号.例如,单个信号都可以代表一个按钮被点击...signal信号对象. // // -deliverOn: 创建一个新 signals 信号对象,在其他队列来处理他们任务. // 在这个示例,这个方法被用来将任务移到后台队列,并在稍后下载完成后返回主线程...一些编程模式,表面上看有些相似,比如 UI回调方法,网络请求响应和KVO通知等;实际上他们拥有许多共同点. RACSignal 信号,统一这些不同APIS,以便组合使用和操作它们.

1.2K91

自学Swift之路(二)UITableView自定义和实际利用

6EDD4AC9-47E3-401F-91A4-2DA836439787.png Demo开始之前,我们想想应该会使用到屏幕宽高等一些常用值,OC,咱们可以使用PCH然后宏定义,然而在Swift...,是没有宏这个概念,但是直接创建一个文件,在里面直接定义常量,别的文件也是可以访问和使用(并且不需要导入):如图创建一个common文件 ?...ImageView和一个Label,虽然数据是死,但是Swift,另外一个是可以直接访问另一个变量(如果没做任何保护的话),所以我们配置cell时候是可以直接赋值,这里就不弄了,然后我们看创建表视图那一块...学了这么几天,我发现Swift还是比较容易入手,下篇文章我会用一个小项目,本人是做室内地图SDK,这次小项目是仿我OC写SDK Demo,使用Swift和OC混编,集成百度地图SDK和自己室内...在下篇文章中会讲讲,Swift项目已上github:https://github.com/qingmomo/Swift-die OC版demo我们官网:http://www.innsmap.com

2.3K90

Swift入门:怎样安装Xcode和创建Playground

Swift 2.2是对swift2.0一个小更新,Swift 3删除一些语法之前,它已经将那些语法设置为废弃使用。...Crashes(崩溃)是指你代码出现灾难性错误,你应用无法恢复。如果用户正在运行你应用程序,它将消失,他们将回到主屏幕上。如果你Xcode运行,你会看到一个崩溃报告。...Taylor SwiftSwift编程语言无关。这是一个遗憾,你可能会想象,但我会试图弥补这个不足,本教程使用她歌曲。...代码左侧窗格,您将编辑此代码,以便在我们开始时快速完成您自己工作。结果显示右侧窗格,它将显示您Swift代码所做工作。...您还将注意到,操场第一行两个斜线开头,//。当 Swift 看到两条这样斜线时,它会忽略掉线后面的所有东西。这通常用于注释:您在代码写入注释,帮助您理解它以后作用。

6.1K10

Swift开发:自定义标签栏UITabBarController (Swift项目开始第一步)

Swift学习过程,个人感觉虽说两种语言相似度很大,但是Swift依然代码风格上有着和OC很大差异。...Main,因为我们要使用纯代码方式创建标签栏控制器,系统自带Main.StoryBoardxib形式界面我们并不需要。...第二步:准备资源文件 1.Assets.xcassets存放标签栏按钮所需要图片资源 ?...屏幕快照 2017-07-15 下午1.46.26.png 这里做下说明,之所以创建这个plist文件是因为之后创建视图控制器和标签按钮时会有很大便利性,而且也十分方便真实开发过程需求更改。...项目前期我们自定义方式创建标签栏,这也是为了后期应对更加复杂需求做伏笔,比如增加新控制器我们只需要修改plist配置文件属性创建相应视图控制器就可以,这样就避免了修改大量代码。

3.9K70

【IOS开发基础系列】UIAlertController专题

默认样式         swift版本和Objective-C版本不同,swift,alertView初始化只允许创建拥有一个取消按钮对话框视图。...一种模块化替换方式来代替这两货功能和作用。...假定我们要让“登录”文本框至少有3个字符才能激活“好按钮。很遗憾是,UIAlertController并没有相应委托方法,因此我们需要向“登录”文本框添加一个Observer。...类同样也是iOS 8新出现,用来替换UIPopoverController。...不过您仍然可以需要时候编程方式释放它,就像释放其他视图控制器一样。您应当在应用程序转至后台运行时移除对话框或者上拉菜单。

34530

教你如何自定义AlertView

本文就介绍如何自定义alertView,看完你就懂得制作属于自己alertView了 一、创建DWAlert.swift 创建一个名为DWAlert.swiftclass DWAlert:...上面代码const是为了定义弹出框需要坐标和长宽,由于是不变,所有let修饰,与OC常量类似 二、绘制alertView 写一个继承init方法,把title(alert标题),content...方法添加backImageView背景蒙版 2、获取当前主窗口,并定义一个alertViewframe 3、利用UIView.animate对alertView进行动画操作。...注意:angle值为M_1_PI / 1.5,只是个参考,您可以换其他值,试试效果 4、完成动画后,调用父removeFromSuperview移除alertView 四、实现alertView...五、使用DWAlert ViewController创建一个按钮,并添加一个点击事件ClickMe,方法里面创建alertView @IBAction func ClickMe(_ sender:

1.2K50

iOS 仿支付宝银行卡界面(支持Swift和OC)

初始化WalletView并加载钱包头部视图walletHeader 需要加载钱包地方初始化WalletView,并自定义头部视图walletHeader和卡片视图,Demo ViewController...钱包视图中实现添加卡片方法 展示页面我们可以看到,页面的左上角有一个添加按钮,这个按钮UI布局头部视图中实现,具体功能是,添加一个卡片,具体实现方法如下: open func insert...() } } ViewController按钮触发事件addCardButtonClick方法调用insert方法代码如下: @objc func addCardButtonClick...CardView实现点击手势展示隐藏卡片 Demo实现在CardView中点击除了删除按钮外任何位置,都可以触发隐藏卡片功能,这里是CardView添加了手势来实现该功能,代码如下: public...导入项目使用介绍 最后介绍一下该如何在项目中导入该功能,下载Demo,将DemoFBYBankCard.framework文件和ColoredCardView.swift文件导入项目中,需要加载页面中直接引用即可

1.4K20

Swift 周报 第四十一期

周报精选 新闻和社区:现推出超过 30 个新开发者活动 提案:全局变量严格并发性 Swift 论坛:Swift 6 语言模式进展 推荐博文:Swift 崩溃回溯 话题讨论: 如果公司市中心,...完成 Swift 6 语言模式数据竞争安全所需剩余语言工作将分为两: 填补严格并发模型所有漏洞,以便静态地或在静态安全无法证明情况下动态地诊断数据竞争。...换句话说,专门用于非尽事枚举要求,即添加 @unknown 默认情况,处理未来枚举案例,已从 “Swift 4 警告/Swift 5 错误” 降级为 “Swift 4 运行时陷阱/Swift...使用了相对新但规模较小 Verse 编程语言几个月后,我开始喜欢能够 if 语句条件列表创建中间常量和变量,以及执行常规函数能力。 我开始思考为什么 Swift 没有这样相当方便功能。...推荐博文 Swift 崩溃回溯[9] 摘要: 这篇博客讨论了 Swift 5.9 版本中所包含一些新调试代码功能,一个能在实时检查崩溃外部互动性极强崩溃处理器,一个可以触发调试器进行即时调试功能

20540
领券