2013-02-12 86 views
3

我正在尝试将pkrevealcontroller滑动菜单集成到现有的具有与segues等现有故事板的iOS项目中。我扩展了UINavigationViewController并将新类链接到故事板上的Nav Controller。在我的应用程序委托我做到以下几点:在现有的Xcode故事板上使用pkrevealcontroller

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; 

当我运行应用程序,它成功地增加了滑动菜单图标,导航栏,以及FrontView的幻灯片,我想它。但它并没有使用我在故事板上添加的标题或细节。我正在尝试甚至可能。

+0

你所说的 “扩展UINavigationViewController” 是什么意思? PKRevealController在哪里进来?您在故事板中的问题中是否提到了任何控制器,或者是您添加的这些新控件? – rdelmar 2013-02-12 04:13:38

+0

rdelmar - 我添加了应用程序委托的其余代码。通过扩展,我的意思是我创建了我自己的自定义类,它是uinavigationviewcontroller的一个子类。 MainNavViewController和myRootViewController在我的故事板中。 – 2013-02-12 04:17:53

+0

您的故事板中是否有FrontViewController或右侧viewController?我试图找出故事板中的内容,以及您在应用程序委托中添加的新内容。 – rdelmar 2013-02-12 04:21:10

回答

10

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

- (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; 
} 
+0

你是男人!非常感谢。奇迹般有效。 – 2013-02-12 05:06:21

+0

我不明白。这是否意味着我应该使我的故事板的'PKRevealController'入口点?我不能只从标签栏按钮点击处理程序调用PKRevealController? – expert 2013-09-10 07:58:35

+0

@ruslan,你有一个标签栏控制器作为你的窗口的根视图控制器吗?你想让PKRevealController在选项卡中的一个控制器? – rdelmar 2013-09-10 14:54:59

0

我的应用程序委托不具备revealController变量所以不得不创建手册,就是你有什么呢?

0

斯威夫特使用此,

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 
}