swift - How do I completely hide this UIImageView -


i have uitableview list of items can filtered. when user chooses filter, uiview exposed using height nslayoutconstraint changes 0 40 pixels:

enter image description here

the circle x clear button clears filter , closes uiview changing height constraint 0.

the problem when uiview closes, clear button doesn't go away:

enter image description here

here's relevant code:

class liftlogviewcontroller: uiviewcontroller, uitableviewdatasource, uitableviewdelegate, nsfetchedresultscontrollerdelegate {    let coredatastack = coredatastack()    var liftevents = [liftevent]()    //mark: ib outlets    @iboutlet var tableview: uitableview!   @iboutlet weak var navitem: uinavigationitem!   @iboutlet weak var filterviewheightconstraint: nslayoutconstraint!   @iboutlet weak var clearfilterbutton: uiimageview!   @iboutlet weak var selectedfilter: uilabel!   @iboutlet weak var clearbuttonheightconstraint: nslayoutconstraint!   @iboutlet weak var clearbuttonview: uiimageview!    var isfilterviewopen = false    override func viewdidload() {      let donebutton = uibarbuttonitem(title: "done", style: .plain, target: self, action: #selector(self.dismisslog(_:)))      let filterimage = uiimage(named: "filter_icon")      let filterbutton = uibarbuttonitem(image: filterimage, style: .plain, target: self, action: #selector(self.actionfilter))      self.navitem.rightbarbuttonitems = [donebutton, filterbutton]      let buttontap = uitapgesturerecognizer(target: self, action: #selector(self.clearfilter))      clearfilterbutton.addgesturerecognizer(buttontap)      filterviewheightconstraint.constant = 0.0      clearbuttonheightconstraint.constant = 0.0      super.viewdidload()   }   override func viewwillappear(animated: bool) {     let filterpredicate: nspredicate?     if let logfilter = userdefaultsmanager.sharedinstance.logfilter?.rawvalue {       filterpredicate = nspredicate(format: "lift.liftname = [c] %@", logfilter)       print("viewwillappear thinks filter \(logfilter)")     } else {       filterpredicate = nil     }     reloaddata(filterpredicate)      let currentfilter = getcurrentlogfilter()      if currentfilter != nil {       selectedfilter.text = "filtered \(currentfilter!)"       isfilterviewopen = true       clearbuttonview.hidden = isfilterviewopen ? false : true     } else {       selectedfilter.text = nil     }      super.viewwillappear(animated)   }    override func viewdidappear(animated: bool) {     filterviewheightconstraint.constant = isfilterviewopen ? 40.0 : 0.0      clearbuttonheightconstraint.constant = isfilterviewopen ? 21.0 : 0.0      clearbuttonview.hidden = isfilterviewopen ? false : true      uiview.animatewithduration(0.33, delay: 0, options: [.curveeaseout], animations: {      self.view.layoutifneeded()         }, completion: nil)   }   func clearfilter() {     userdefaultsmanager.sharedinstance.logfilter = nil      isfilterviewopen = !isfilterviewopen      uiview.animatewithduration(0.33, delay: 0, options: [.curveeaseout], animations: {        self.view.layoutifneeded()       }, completion: nil)      selectedfilter.text = nil      reloaddata()   } 

you can see i've tried both setting .hidden value on uiview holds clear button true , i've tried changing height constraint 0.0 neither of make gone completely.

searching while hasn't produced answers. can point out what's wrong i'm doing? thanks.

it seems hair line color on navigation bar may clear resulting in button still being visible. maybe change , see if covers button. can this:

let view = uiview() view.backgroundcolor = uicolor.graycolor() self.navigationcontroller!.navigationbar.hairlineimageviewinnavigationbar(view) 

Comments

Popular posts from this blog

mysql - Dreamhost PyCharm Django Python 3 Launching a Site -

java - Sending SMS with SMSLib and Web Services -

java - How to resolve The method toString() in the type Object is not applicable for the arguments (InputStream) -