ios - Saving Y position of UIViewSubclass Does not Have member Named Error -


im trying save position of uiview subclass moved via pan gesture recogniser , needs stay in position

the uiview subclass movesection

 required init(coder adecoder: nscoder) {         super.init(coder: adecoder)          var pangesture = uipangesturerecognizer(target: self, action:selector("reposition:"))         self.addgesturerecognizer(pangesture)          let yposition = self.frame.origin.y      }     func reposition(recognizer: uipangesturerecognizer) {           let translation = recognizer.translationinview(self)         if let view = recognizer.view { view.center = cgpoint(x:view.center.x + translation.x, y:view.center.y + translation.y)          }          recognizer.settranslation(cgpointzero, inview: self)          if recognizer.state == uigesturerecognizerstate.ended {              //center view            self.center.x = self.bounds.width/2           }      } 

save position in class

class viewcontroller  @iboutlet var reordersectionone: movesection!  let positiondefaults = nsuserdefaults() positiondefaults.setobject(nsstringfromcgpoint(self.reordersectionone.yposition), forkey: "pointpositionsectionone") positiondefaults.synchronize() 

error: not have member named yposition

you need move declaration of yposition inside init(coder:) inside uiview subclass. also, yposition cgfloat, not cgpoint. used different instance variable, called savedcenter, save position actual cgpoint. i've refactored code , implemented changes below.

class moveableview: uiview {      var savedyposition: cgfloat!      required init?(coder adecoder: nscoder) {         super.init(coder: adecoder)          let panrecognizer = uipangesturerecognizer(target: self, action:"reposition:")         self.addgesturerecognizer(panrecognizer)          self.savedyposition = cgrectgetminy(self.frame)     }      func reposition(recognizer: uipangesturerecognizer) {         let translation = recognizer.translationinview(self)          if let view = recognizer.view {             view.center = cgpointmake(view.center.x + translation.x, view.center.y + translation.y)         }          recognizer.settranslation(cgpointzero, inview: self)          if recognizer.state == .ended {             // center view             self.center.x = cgrectgetwidth(self.bounds) / 2.0         }      }  } 

and put following in viewcontroller class

func saveposition() {     let defaults = nsuserdefaults()     defaults.setfloat(float(self.reordersectionone.savedyposition), forkey: "ypositionsectionone")     defaults.synchronize() } 

note assumed uiview subclass named moveableview.


Comments

Popular posts from this blog

searchKeyword not working in AngularJS filter -

sequelize.js - Sequelize: sort by enum cases -

user interface - how to replace an ongoing process of image capture from another process call over the same ImageLabel in python's GUI TKinter -