swift - How to use optional binding in switch statement in prepare(segue:) -


in swift can use cool feature of switch statement in prepare(segue:) create cases based on type of destination view controller:

example:

override func prepare(for segue: uistoryboardsegue, sender: any?) {     switch segue.destination {      case let detailviewcontroller detailviewcontroller:       detailviewcontroller.title = "detailviewcontroller"     }     case let otherviewcontroller otherviewcontroller:       otherviewcontroller.title = "otherviewcontroller"     } } 

however, if segue triggered split view controller, destination navigation controller, , want switch on class of navigation controller's top view controller?

i want this:

case let nav uinavigationcontroller,      let detailviewcontroller = nav.topviewcontroller as? detailviewcontroller:     //case code goes here 

where have same construct use in multiple part if let optional binding.

that doesn't work. instead, have rather painful construct this:

case let nav uinavigationcontroller   nav.topviewcontroller detailviewcontroller:   guard let detailviewcontroller = nav.topviewcontroller as? detailviewcontroller     else {       break   }   detailviewcontroller.title = "detailviewcontroller" 

that works, seems needlessly verbose, , obscures intent. there way use multi-part optional binding in case of switch statment in swift 3?

i don't think there way switch , case, can closer looking if , case (update: hamish pointed out, case isn't needed scenario) or normal if let:

override func prepare(for segue: uistoryboardsegue, sender: any?) {      if let nav = segue.destination as? uinavigationcontroller,          let detailviewcontroller = nav.topviewcontroller as? detailviewcontroller {         detailviewcontroller.title = "detailviewcontroller"     }      if let otherviewcontroller? = segue.destination as? otherviewcontroller {         otherviewcontroller.title = "otherviewcontroller"     } } 

since switch statement in example isn't going ever verified compiler handling cases (because need create default case), there no added benefit using switch instead of if let


Comments

Popular posts from this blog

account - Script error login visual studio DefaultLogin_PCore.js -

xcode - CocoaPod Storyboard error: -