ios - Swift - Shake Motion to do prepareforsegue -
ios - Swift - Shake Motion to do prepareforsegue -
my intention empty values within 2 arrays - force[] & stiffness[], class prepareforsegue, when user perform shake gesture. below codes , error encountering.
springviewcontroller1
var springnum : nsinteger = 0 class springviewcontroller1 : uitableviewcontroller, uitableviewdatasource { var forcefulness = [float]() var stiffness = [float] () }
springviewcontroller2
class springviewcontroller2 : uitableviewcontroller , uitableviewdelegate, uitableviewdatasource { var forceview2 = [float]() var stiffview2 = [float]() override func canbecomefirstresponder() -> bool { homecoming true } override func motionended(motion: uieventsubtype, withevent event: uievent) { if(event.subtype == uieventsubtype.motionshake){ println("shaken") self.performseguewithidentifier("reset", sender: self) } } override func prepareforsegue(segue: uistoryboardsegue, sender: anyobject!) { if(segue.identifier == "reset") { var svcspringcontrol1 = segue.destinationviewcontroller springviewcontroller1 springnum = 0 svcspringcontrol1.force.removeall(keepcapacity: true) svcspringcontrol1.stiffness.removeall(keepcapacity: true) } } }
the code stops here, though did not placed breakpoint within code. click go on programme execution.
the code stops here.
the trick create recursive function go through view controllers stack:
func getsvc1fromvcstack(vc:uiviewcontroller) -> springviewcontroller1{ if(vc.iskindofclass(springviewcontroller1)){ homecoming vc springviewcontroller1; } else if(vc.parentviewcontroller == nil){ homecoming springviewcontroller1.alloc() } else { homecoming getsvc1fromvcstack(vc) } }
and instead of
var svcspringcontrol1 = segue.destinationviewcontroller springviewcontroller1
it should
var svcspringcontrol1 = self.getsvc1fromvcstack(self.parentviewcontroller!) springviewcontroller1
this caused unwind segue, svc1 not destination. work around reference svc1.
ios xcode swift segue
Comments
Post a Comment