3

我正在尝试将 pkrevealcontroller 滑动菜单集成到现有的 iOS 项目中,该项目具有带有 segues 等的现有情节提要。我扩展了 UINavigationViewController 并将我的新类链接到情节提要上的导航控制器。在我的应用程序委托中,我执行以下操作:

MainNavViewController *frontViewController = [[MainNavViewController alloc] initWithRootViewController:[[myRootViewController alloc] init]];
UIViewController *rightViewController = [[menuViewController alloc] init];

self.revealController = [PKRevealController  revealControllerWithFrontViewController:frontViewController
                                                                rightViewController:rightViewController
                                                                            options:nil];

self.window.rootViewController = self.revealController;

当我运行应用程序时,它成功地将滑动菜单图标添加到导航栏,并且前视图按我想要的方式滑动。但它没有使用我在情节提要上添加的标题或转场。我正在尝试甚至可能。

4

3 回答 3

10

我认为问题在于您正在实例化一个新的frontViewController——这不是您故事板中的那个。我不完全确定如何做到这一点,但我会这样尝试。我会在情节提要中添加一个 UIViewController——将其类更改为 PKRevealController,并使其成为情节提要中的初始控制器,但不要将其连接到其余场景。在 IB 中给 MainNavViewController 一个标识符,然后将应用程序委托中的代码更改为:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
    self.revealController = (PKRevealController *)self.window.rootViewController;
    UIViewController *rightViewController = [[menuViewController alloc] init];
    MainNavViewController *frontViewController = [[UIStoryboard storyboardWithName:@"MainStoryboard" bundle:nil] instantiateViewControllerWithIdentifier:@"frontViewController"];
    [self.revealController setFrontViewController:frontViewController];
    [self.revealController setRightViewController:rightViewController];
    return YES;
}
于 2013-02-12T04:53:22.507 回答
0

我的应用程序委托没有revealController变量,因此必须创建该手册,这是您必须做的事情吗?

于 2013-04-11T13:09:33.190 回答
0

Swift中使用这个,

func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {

    var frontViewController:UIViewController = UIStoryboard(name: "Main", bundle: nil).instantiateViewControllerWithIdentifier("frontVC") as! UIViewController

    var leftViewController:UIViewController = UIStoryboard(name: "Main", bundle: nil).instantiateViewControllerWithIdentifier("leftVC") as! UIViewController

    var revealController:PKRevealController = PKRevealController(frontViewController: frontViewController, leftViewController: leftViewController)

    self.window?.rootViewController = revealController

    return true
}
于 2015-05-11T14:02:49.770 回答