tahoecoop
tahoecoop

Reputation: 378

How to remove custom nav bar back button

I am adding some subview to main view controller. When I add one of these subview, I create a custom back button so that it will go back to main view controller, not the prior view controller in the navigation stack. I can add it programmatically but I can't seem to figure out how to delete it. Any help is greatly appreciated!

    func createCustomBackButton() {

              self.navigationItem.hidesBackButton = true
              let customFont = UIFont.systemFontOfSize(26.0)
              UIBarButtonItem.appearance().setTitleTextAttributes([NSFontAttributeName: customFont], forState: UIControlState.Normal)

              // customBackButton is a property I set for UIBarButtonItem
              customBackButton = UIBarButtonItem(title: "<", style: .Plain, target: self, action: "back:")
              self.navigationItem.leftBarButtonItem = customBackButton
        }


           func back(sender: UIBarButtonItem) {
              UIView.animateWithDuration(0.3, animations: {
                 self.containerView.alpha = 0
                 }, completion: { finished in
                    self.view.sendSubviewToBack(self.containerView)
                    self.navigationItem.hidesBackButton = false

                    // what do I do on this line to get this to disappear or set to nil??
                    self.customBackButton = UIBarButtonItem(title: "", style: UIBarButtonItemStyle.z, target: self, action: nil)

                    // clears out prior view that was there to free up memory
                    for view in self.containerView.subviews {

                       view.removeFromSuperview()
                    }
              })
           }

Upvotes: 0

Views: 94

Answers (2)

Caleb
Caleb

Reputation: 5626

Using self.navigationItem.leftBarButtonItem = nil will reset the leftBarButtonItem back to the default.

Upvotes: 1

jasonnoahchoi
jasonnoahchoi

Reputation: 871

You should use an unwind segue. If you're using storyboards, drag from the "destination viewcontroller" to the thing that looks like a sideways share button (exit button) of the VC you want unwind from. Name it whatever you'd like, we'll call it "unwind"

and then call in the same VC:

self.performSegueWithIdentifier("unwind", sender: self)

in the VC you want to unwind back to:

@IBAction func unwindToMapSegue(segue: UIStoryboardSegue) {
    // do something
}

Upvotes: 0

Related Questions