【问题标题】:iOS Integrate PKRevealController with Storyboard & Auto LayoutiOS 将 PKRevealController 与 Storyboard 和自动布局集成
【发布时间】:2013-01-30 21:47:12
【问题描述】:

我正在尝试将 PKRevealController 集成到我的现有项目中。

https://github.com/pkluz/PKRevealController

如果我使用情节提要,如何设置左视图控制器、右视图控制器和前视图控制器?自述文件说要做...

PKRevealController *revealController = [PKRevealController revealControllerWithFrontViewController:frontVC leftViewController:leftVC options:options];

self.window.rootViewController = revealController;

我会将这些代码行放在我现有的故事板项目中的什么位置?或者有其他方法可以设置吗?

谢谢!

【问题讨论】:

标签: ios objective-c ios5 storyboard viewcontroller


【解决方案1】:

只需将 segue 目标控制器的类型设置为 PKRevealController 并为前、左和右视图控制器设置故事板 ID。

- (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"];

  }
}

【讨论】:

  • 我不明白。这是否意味着我应该将 PKRevealController 作为我的故事板的入口点?我不能只从标签栏按钮单击处理程序调用 PKRevealController 吗?
  • 值得注意的是,这不起作用。您可以将 IB 中的视图控制器设置为具有 PKRevealController 的类,但是当发生转场时,屏幕是空白的,只是半透明的灰色。
  • @startupthekid 故事板中至少需要 5 个视图控制器才能使我的示例工作:源视图控制器(放置我的示例代码的位置)、PKRevealController、前视图控制器、左视图控制器和右视图控制器。对于前、左和右,您必须设置情节提要 ID
  • 我有超过 20 个。仍然无法正常工作。这是上个版本的错误。
  • 好的。我不再使用 PKRevealController。相反,我使用 ECSlidingViewController。也许它也更适合你。
【解决方案2】:

我知道这是一个旧线程,但无论如何我都会在这里发表:)

要使 PKRevealController 与故事板一起工作,基本上你需要三个视图控制器。

  1. BaseController(我这么称呼它),它被 PKRevealController 扩展,将如何充当主内容控制器和导航控制器的基础。

  2. MainController,设置为 fronViewController。

  3. NaviController,我们基本上将其用作leftViewController,也就是导航菜单。

仅供参考:您可以从 stroyboard 设计和编码 MainController 和 NaviController。

这就是我们的做法; 首先我们需要像这样用 PKRevealController 扩展我们的 BaseController;

@interface MainController : PKRevealController

其次,还在BaseController中,将这些行添加到viewDidLoad方法中;

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

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

然后将 PKRevealController 委托设置为;

self.delegate = self;

就是这样。

【讨论】:

  • 感谢它的工作!但是我们如何在不从前面的 vc 滑动的情况下向左或向右显示/隐藏菜单呢?请
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-09-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多