在 swift 3 上的按钮单击应用程序是与故事板绑定的崩溃
Posted
技术标签:
【中文标题】在 swift 3 上的按钮单击应用程序是与故事板绑定的崩溃【英文标题】:in swift 3 on button click application is crash which bind with story board 【发布时间】:2016-09-28 05:58:11 【问题描述】:我在 Swift 2.2 中开发了一个项目,在 Swift 3 启动后,我需要在 Swift 3 中转换它并使其可与 ios 10 编译。但是在转换项目后,我遇到了一些问题,例如当我单击与情节提要连接的按钮时我的应用程序崩溃了,原因是 unrecognized selector sent to instance 。它在 swift 2.2 中工作,我没有改变任何东西。
@IBAction func btnTwitter_Clicked(sender:UIButton)
if checkInternetConnection()
SINGLETON.startLoadingActivity(self.view);
let objLocationTracker = LocationTracker.sharedInstance
objLocationTracker.fetchCurrentLocation( (objLocation) -> (Void) in
SINGLETON.stopLoadingActivity(self.view)
self.loginWithTwitter(objLocation: objLocation)
)
else
SINGLETON.toast(read_Localizable("noInternet"),view: self.view)
【问题讨论】:
我注意到您在 IBAction 之前放置了两个“@”符号。这只是一个错字还是在您的代码中也一样?请检查您的代码并删除多余的“@”。也许这是导致问题的原因 @ShayanJalil 这个错误在 copr 粘贴中出现,它不在代码中 为什么要投反对票?我认为这不是无关紧要的问题,有很多人面临这个问题,因此对此没有任何帮助。至少给出一个理由 我没有投反对票,但这可能是因为您没有分享完整的错误消息。 “无法识别的选择器”部分告诉您错误的类型,但完整的错误消息告诉我们发生错误的哪个选择器和对象类型。下次,分享完整的错误信息。此外,鉴于问题很容易出现在选择器中,您也应该共享这部分代码。您向我们展示了选择器调用的方法,但没有向我们展示问题的根源,例如你在哪里打电话给addTarget
或者你有什么。
@Rob 感谢您的评论,下次我会处理这个问题
【参考方案1】:
看到这个
@@IBAction func btnTwitter_Clicked(sender:UIButton) 您在按钮前面添加了额外的 @,检查一次,
在 swift3 中我们需要像这样编写按钮动作
yourbuttonName.addTarget(self, action: #selector(yourVCName. btnTwitter_Clicked(_:)), for: .touchUpInside)
和调用方法一样
@IBAction func btnTwitter_Clicked(_ sender: UIButton)
print("Button pressed ? ")
// continue your work
或删除按钮 Outlets 和 IBActions 并重新生成一次,肯定有效
【讨论】:
感谢您的回答,但@@ 是复制粘贴错误,它不在代码中 所以我需要转换所有与情节提要连接的按钮选择器吗? @chiragshah - 绝对,只需删除连接并重新生成一次肯定有效【参考方案2】:只需从情节提要中的连接检查器中删除所有 Outlets 和 IBAction,然后再次添加它们。之后一切都应该正常
【讨论】:
【参考方案3】:如果您以编程方式向按钮添加操作,您的选择器语法类似于#selector(btnTwitter_Clicked(_:))
,这不适用于从 Swift 3 开始的 Swift 3,您需要指定第一个参数名称,因此在您的第一个参数名称中添加 _像func btnTwitter_Clicked(_ sender: UIButton)
这样的方法或像这样更改选择器语法,其中之一将解决您的崩溃问题。
#selector(btnTwitter_Clicked(sender:))
【讨论】:
感谢您的回答让我试试这个 你节省了我的一天,这正在工作,所以我需要转换与情节提要连接的所有按钮选择器对吗? 是的,很乐意提供帮助:)以上是关于在 swift 3 上的按钮单击应用程序是与故事板绑定的崩溃的主要内容,如果未能解决你的问题,请参考以下文章
Swift 3 - 表 VC(使用 coredata)和细节 VC 的故事板设计 *从默认信息的细节 VC 开始*
如何通过单击 iPhone 故事板中的 ActionSheet 按钮移动到下一个 viewController