在现有项目上使用PKRevealController(幻灯片菜单)

时间:2014-03-16 12:56:17

标签: ios iphone objective-c storyboard

在任何事情和所有事情之前,我知道另一个用户存在类似的线程,我尝试了代码回答,但它对我没有用,因为我的风险投资和故事板有点不同,因此提出同样的问题我的设置和参数

我的故事板和应用程序看起来像这样,我的初始rootViewController作为tabBarController。

Storyboard

我正在使用这个PKRevealController添加一个滑块左菜单栏
https://github.com/pkluz/PKRevealController/blob/master/Documentation/USAGE.md

我在appDelegate的didFinishLaunchingWithOptions方法中添加了以下代码(取自我在SO上找到的类似问题的答案)

PKRevealController *revealController = (PKRevealController *)self.window.rootViewController;
    UIViewController *leftViewController = [[GDmenuViewController alloc] init];
    UIViewController *frontViewController = [[UIStoryboard storyboardWithName:@"Main" bundle:nil] instantiateViewControllerWithIdentifier:@"tabBarCtrl"];
    [revealController setLeftViewController:leftViewController];
    [revealController setFrontViewController:frontViewController];  

GDmenuViewController是我为UITableView菜单在左侧使用的UITableViewController类 tabBarCtrl是我设置的tabBarController的StoryBoardID

编译后我收到以下错误

2014-03-16 18:18:06.659[3595:70b] -[UITabBarController setLeftViewController:]: unrecognized selector sent to instance 0xcf565a0
2014-03-16 18:18:06.662[3595:70b] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[UITabBarController setLeftViewController:]: unrecognized selector sent to instance 0xcf565a0'

--------更新-------------

我将app delegate中的代码更改为以下内容,因为我的tabBarController是我的initialVC

UITabBarController *tabBarController = (UITabBarController *)self.window.rootViewController;
    GDmenuViewController *leftViewController = [tabBarController.storyboard instantiateViewControllerWithIdentifier:@"leftMenu"];
    PKRevealController *revealController = [PKRevealController revealControllerWithFrontViewController:tabBarController leftViewController:leftViewController];
    self.window.rootViewController = revealController;  

现在我没有收到该错误,但我的menuViewController(TableView)仍然没有出现。
我可以运行应用程序,甚至可以滑动以查看PKVC是否正常工作,而不是我的tableView,它只显示一个灰色的空白视图

1 个答案:

答案 0 :(得分:2)

对于遇到类似问题的人来说,这就是我修复并使其发挥作用的方式:

UITabBarController *tabBarController = (UITabBarController *)self.window.rootViewController;
    GDmenuViewController *leftViewController = [tabBarController.storyboard instantiateViewControllerWithIdentifier:@"leftMenu"];
    PKRevealController *revealController = [PKRevealController revealControllerWithFrontViewController:tabBarController rightViewController:leftViewController];
    self.window.rootViewController = revealController;

我的TabBarController是我的rootViewController以及入口点
我的leftMenu是一个带有自定义类GDmenuViewController的滑动菜单TableViewController

PS:如果滑动有效,但你没有看到你按照预期刷过的menuVC(在我的情况下为灰色),请检查menuVC的identityInspector中的所有内容,很可能会出现问题。
在我的情况下,我的细胞(静态)是有缺陷的,所以我不得不删除所有细胞并读取它们。