Welcome to OStack Knowledge Sharing Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
989 views
in Technique[技术] by (71.8m points)

ios - Swift: unrecognized selector sent to instance

Why isn't this working:

    self.backButton?.addTarget(self, action: Selector("backButtonPressed:"), forControlEvents: .TouchUpInside)

   // unrecognized selector sent to instance CRASH
    func backButtonPressed(sender:AnyObject?) {

    }

this crash to (unrecognized selector sent to instance)

  func backButtonPressed(sender:UIButton) {

    }
See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Answer

0 votes
by (71.8m points)

If I am not wrong you have declared your backButtonPressed method inside another method like this:

override func viewDidLoad() {
    super.viewDidLoad()

    let button = UIButton(frame: CGRectMake(150, 240, 75, 30))
    button.setTitle("Next", forState: UIControlState.Normal)
    button.addTarget(self, action: Selector("backButtonPressed:"), forControlEvents: UIControlEvents.TouchUpInside)
    button.backgroundColor = UIColor.greenColor()
    self.view.addSubview(button)

    func backButtonPressed(sender:AnyObject?) {

        print("Called")
    }
    // Do any additional setup after loading the view, typically from a nib.
}

This is wrong way.

Declare your method outside as shown in below code:

override func viewDidLoad() {
    super.viewDidLoad()

    let button = UIButton(frame: CGRectMake(150, 240, 75, 30))
    button.setTitle("Next", forState: UIControlState.Normal)
    button.addTarget(self, action: Selector("backButtonPressed:"), forControlEvents: UIControlEvents.TouchUpInside)
    button.backgroundColor = UIColor.greenColor()
    self.view.addSubview(button)
}

func backButtonPressed(sender:AnyObject?) {

    print("Called")
}

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome to OStack Knowledge Sharing Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

2.1m questions

2.1m answers

60 comments

57.0k users

...