iDevelopper / PBRevealViewController

A UIViewController subclass for revealing a left and/or right view controller above or below a main view controller.
MIT License
80 stars 16 forks source link

Left an right view do not open when tapped on bar buttons on main view #1

Closed narri007 closed 8 years ago

narri007 commented 8 years ago

Hi, I used your PBRevealViewController to get the left and right menu. I am able to open the left and right menu's with drag. But it's not opening the menu when I tap the left and right bar buttons.

` @IBOutlet var leftButton: UIBarButtonItem! @IBOutlet var rightButton: UIBarButtonItem! if self.revealViewController() != nil {

        leftButton.target = self.revealViewController()
        leftButton.action = "revealLeftView:"
        self.revealViewController().leftPresentViewHierarchically = true

        rightButton.target = self.revealViewController()
        rightButton.action = #selector(PBRevealViewController.revealRightView)
        view.addGestureRecognizer(self.revealViewController().panGestureRecognizer)
    }`

Above is the code i used and I checked with the example, there it is working but in program it is not working.

Please help me on this. Thank you!

iDevelopper commented 8 years ago

It crash? revealLeftView: is an unrecognized selector in PBRevealViewController (:there is no params)

        if self.revealViewController() != nil {

            leftButton.target = self.revealViewController()

            //leftButton.action = "revealLeftView:"
            leftButton.action = #selector(PBRevealViewController.revealLeftView)

            self.revealViewController().leftPresentViewHierarchically = true

            rightButton.target = self.revealViewController()

            rightButton.action = #selector(PBRevealViewController.revealRightView)
            //view.addGestureRecognizer(self.revealViewController().panGestureRecognizer)
        }

Also, the pan gesture is added by default by PBRevealViewController.

narri007 commented 8 years ago

I tried with this code already its not working. It's not getting crashing. When I click on Bar button there is no action. Nothing is happened.

iDevelopper commented 8 years ago

Then revealViewController is nil, I think. Could you set a breakpoint? And can you post your sample project?

narri007 commented 8 years ago

Got it! I forgot to delete SWRevealingController Class. Thank you.

I am new to this Navigation bar and Slide menu, Can you please help me in changing the left bar button image when I open the menu and close it. You suggested to use the delegate methods,

`/* * Called just before the left view controller is presented. * @param revealController The reveal view controller object. * @param controller The left view controller object. */

func revealController(revealController: PBRevealViewController, willShowLeftViewController controller: UIViewController) {

}`

I should include this code in RevealingViewController Class. How can I access my NavigationBar Button in RevealingViewController and change the image of that.

Please help me.

iDevelopper commented 8 years ago

Did you set the PBRevealViewController's delegate? Witch controller is the delegate?

iDevelopper commented 8 years ago

Thanks to you, I added some delegate methods too and see this sample (I'll update Github and Cocoapods):

PBNavSample.zip

narri007 commented 8 years ago

Thank you! @iDevelopper

narri007 commented 8 years ago

Hi @iDevelopper , Thanks for the code. you saved my time, I have one issue I am navigating from left menu to some other view controller. using the code,

let storyboard = UIStoryboard(name: "Main", bundle: nil) var controller: UIViewController? controller = storyboard.instantiateViewControllerWithIdentifier("ActivitysViewController") as! ActivitysViewController if (controller != nil) { let nc = UINavigationController(rootViewController: controller!) if self.revealViewController() != nil { self.revealViewController().pushMainViewController(nc, animated:true) } } In that class I have a back button in the navigation bar. How can I go back from there to previous view and there the left menu should be open. I tried with,

func backAction(){ let storyboard = UIStoryboard(name: "Main", bundle: nil) var controller: UIViewController? controller = storyboard.instantiateViewControllerWithIdentifier("TodayActivityViewController") as! TodayActivityViewController if (controller != nil) { let nc = UINavigationController(rootViewController: controller!) if self.revealViewController() != nil { self.revealViewController().pushMainViewController(nc, animated:true) } } }

and also,

func backAction(){ self.navigationController?.popViewControllerAnimated(true) }

But still it's not going back. Please help me on this.

iDevelopper commented 8 years ago

Hi @narri007 , use setMainViewController as pushMainViewController do something when left or right view is open.

PBNavSample 2.zip

narri007 commented 8 years ago

Got it ! Thank you.