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:
the circle x clear button clears filter , closes uiview changing height constraint 0.
the problem when uiview
closes, clear button doesn't go away:
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
Post a Comment