2016-03-08 54 views
0

嗨我对iOS应用程序的编程非常陌生,并且遇到了此问题。如果它是重复的,我很抱歉。我已经彻底搜索,并已(尝试)阅读所有相关的线程到这个问题,但迄今没有修正它。UILabel在按下时崩溃应用程序

我试图做一个标签,当按下更改其他东西。该标签在另一个类中创建并放入视图中。另外我试图做到这一点,而不需要在它后面放一个按钮。这是代码。

import UIKit 

class ViewController: UIViewController { 

@IBOutlet weak var mountainImage: UIImageView! 
@IBOutlet weak var mphView: Speed! 


override func viewDidLoad() { 
    super.viewDidLoad() 
    setImage() 
    mphView.backgroundColor = UIColor(white: 0.2, alpha: 0.5) 
    mphView.layer.borderColor = UIColor(red: 222, green: 222, blue: 222, alpha: 1).CGColor 
    mphView.layer.borderWidth = 1 
    // Do any additional setup after loading the view, typically from a nib. 
    let touchSpeedLabel = UITapGestureRecognizer(target: self, action: "speedLabelTouched") 

    mphView.addGestureRecognizer(touchSpeedLabel) 
    mphView.userInteractionEnabled = true 
    } 

override func didReceiveMemoryWarning() { 
    super.didReceiveMemoryWarning() 
    // Dispose of any resources that can be recreated. 
    } 
func setImage(){ 

    } 
func speedLabelTouched(sender : UITapGestureRecognizer){ 
    print("Lol this worked") 
    } 
} 

当我按标签上的应用程序崩溃与此错误:

speedLabelTouched]:无法识别的选择发送到实例0x157d838c0 ***终止应用程序由于未捕获的异常“NSInvalidArgumentException”,原因:“无法识别选择器发送到实例0x157d838c0'

在此先感谢您的帮助!

回答

1

您正在告诉它使用名为“speedLabelTouched”(无参数)的方法,但已经实现了名为“speedLabelTouched:”(一个参数)的方法。

它相当合理地找不到无参数版本。

+0

非常感谢这么快的答案,它工作的很棒!为了将来的参考,如果我想要调用的func具有参数,我该如何做到这一点? –

+0

(这是Swift的一部分,我没有玩过,但是)我假设你的原始代码可以和一个参数一起工作,如果你将动作改为“speedLabelTouched:”。 (换句话说,它不像CocoaTouch的问题那样是一个Swift问题。) –

+0

好的非常感谢你。 –