ios - unrecognized selector sent to instance in swift building a UISlider -


ok i'm trying build simple uislider in swift , same error when run code, it's sigbrt error , gives me error:

2015-06-03 22:36:52.659 myslider[2780:224039] * terminating app due uncaught exception 'nsinvalidargumentexception', reason: '-[myslider.viewcontroller slidervaluechanged:]: unrecognized selector sent instance 0x7f92f1e25340' * first throw call stack:

here's code:

import uikit  class viewcontroller: uiviewcontroller {       @iboutlet weak var valuelabel: uilabel!      var slider: uislider!        override func viewdidload() {         super.viewdidload()     slider = uislider(frame: cgrectmake(100, 100,  200,  23))         slider.minimumvalue = 0         slider.maximumvalue = 100         view.addsubview(slider)          slider.center = view.center          slider.value = slider.maximumvalue / 3.0          slider.addtarget(self, action: "slidervaluechanged:", forcontrolevents: uicontrolevents.valuechanged)         slider.continuous = false         saluedidchange(slider)         changecolor()         thumbimage()      }     func saluedidchange(sender: uislider){         valuelabel.text = "\(sender.value)"     }     func changecolor(){         slider.maximumtracktintcolor = uicolor.redcolor()         slider.minimumtracktintcolor = uicolor.greencolor()       }     func thumbimage(){         slider.setthumbimage(uiimage(named: "thumbnormal"), forstate: uicontrolstate.normal)          slider.setthumbimage(uiimage(named: "thumbhighlighted"), forstate: uicontrolstate.highlighted)      }  } 

the error telling what's wrong. you're creating uislider in code. set it's target this:

slider.addtarget(   self,    action: "slidervaluechanged:",    forcontrolevents: uicontrolevents.valuechanged) 

so when change value of slider, method going try call method "slidervaluechanged:" in view controller. method needs take 1 parameter, sender:

@ibaction func slidervaluechanged(sender: anyobject) {   //do new slider value. } 

the type of sender can type uislider.

if don't have method signature in view controller, crash when change slider value, are.

edit:

as others have pointed out in comments/answers, looks target method misnamed method saluedidchange. should rename it.

it's idea put @ibaction tag on methods called controls. must if you're going define control , connect it's action in interface builder (which idea, rather doing in code.)


Comments

Popular posts from this blog

javascript - Bootstrap Popover: iOS Safari strange behaviour -

Magento/PHP - Get phones on all members in a customer group -

session - Logging Out Using PHP -