iOS Integrate PKRevealController with Storyboard & Auto Layout

可紊 提交于 2019-12-04 04:45:02

Just set the segue destination controller's type to PKRevealController and set storyboard ID for front, left and right view controller.

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{

  if ([segue.identifier isEqualToString:@"ToMain"]) {

    PKRevealController* prc = segue.destinationViewController;

    prc.frontViewController = [self.storyboard instantiateViewControllerWithIdentifier:@"FrontViewController"];
    prc.leftViewController = [self.storyboard instantiateViewControllerWithIdentifier:@"LeftViewController"];
    prc.rightViewController = [self.storyboard instantiateViewControllerWithIdentifier:@"RightViewController"];

  }
}

I know this is an old thread, but I'm gonna out it here anyways :)

To make PKRevealController work with storyboard basically you'll need three view controllers.

  1. BaseController (i called it that), which get extended by the PKRevealController how's going to act as the base for the Main content controller and Navigation controller.

  2. MainController, which get set as the fronViewController.

  3. NaviController, which we basically use as the leftViewController, aka navigation menu.

FYI: You can design and code the MainController and NaviController from the stroyboard.

So this is how we do it; First we need to extend our BaseController with PKRevealController like this;

@interface MainController : PKRevealController

Second, still in BaseController, add these line to the viewDidLoad method;

//init the fonrViewController
UIViewController *homeController = [self.storyboard instantiateViewControllerWithIdentifier:@"homeScreen"];
//init the leftViewController
UIViewController *naviContrlller = [self.storyboard instantiateViewControllerWithIdentifier:@"quickNaviScreen"];

[self setFrontViewController:homeController];
[self setLeftViewController:naviContrlller];

Then set the PKRevealController delegate as;

self.delegate = self;

And that's it.

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!