ios - Passing data to another ViewController in Swift -
before begin, let me have taken @ popular post on matter: passing data between view controllers
my project on github https://github.com/model3volution/tipme
i inside of uinavigationcontroller, using push
segue.
i have verified ibaction
methods linked , segue.identifier
corresponds segue's identifier in storyboard.
if take out prepareforsegue:
method segue occurs, without data updating.
my specific error message is: could not cast value of type 'tipme.facesviewcontroller' (0x10de38) 'uinavigationcontroller' (0x1892e1c).
override func prepareforsegue(segue: uistoryboardsegue, sender: anyobject?) { // new view controller using segue.destinationviewcontroller. if segue.identifier == "tofacesvc" { let navcontroller:uinavigationcontroller = segue.destinationviewcontroller as! uinavigationcontroller let facesvc = navcontroller.topviewcontroller as! facesviewcontroller facesvc.balancelabel.text = "balance before tip: $\(balancedouble)" } }
below screenshot code , error. side notes: using xcode 6.3, swift 1.2
a couple of things:
1: change prepareforsegue
if segue.identifier == "tofacesvc" { let facesvc = segue.destinationviewcontroller as! facesviewcontroller facesvc.text = "balance before tip: $\(balancedouble)" }
2: add string variable facesviewcontroller
var text:string!
3: change facesviewcontroller
viewdidload
override func viewdidload() { super.viewdidload() balancelabel.text = text }
the reasons changes: segue destinationviewcontroller
actual facesviewcontroller
transition -> no need navigationcontroller shenanigans. alone remove "case error", occur due unwrapping nil value because try access balancelabel
not have been set yet. therefore need create string variable hold string want assign , assign text in viewdidload
- @ point uilabel
assigned.
proof works:
4: if want display 2 decimal places balance might change string creation (following https://stackoverflow.com/a/24102844/2442804):
facesvc.text = string(format: "balance before tip: $%.2f", balancedouble)
resulting in:
Comments
Post a Comment