将PKRevealController与Storyboard集成

时间:2013-10-28 05:17:58

标签: ios storyboard

我希望集成PKRevealController并为我的应用程序提供整体滑动设置菜单。 我找不到任何有关故事板的教程。我已经有一个storyboad,它托管一个navigationcontroller(默认情况下是一个),带有一个指向rootviewcontroller的箭头(在我的案例中称为LoginViewController)。

根据PKRevealController的任何文档,我添加了一个单独的Viewcontroller场景,并使其类成为PKRevealController,然后在app delegate中执行此操作

@interface AhmAppDelegate() <PKRevealing>
@property (nonatomic, strong, readwrite) PKRevealController *revealController;
@end 

@implementation AmAppDelegate

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary    
*)launchOptions
{

self.revealController = (PKRevealController *)self.window.rootViewController;
self.window.rootViewController = self.revealController;
LoginViewController *frontViewController = [[UIStoryboard storyboardWithName:@"Mainview_iPad" 
 bundle:nil] instantiateViewControllerWithIdentifier:@"LoginViewController"];
[self.revealController setFrontViewController:frontViewController];//This throws the error

return YES;

}

运行时我收到以下错误

   Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: 
    '-[UINavigationController setFrontViewController:]: unrecognized selector sent to instance 
   0xb17aec0'

我做错了什么?

1 个答案:

答案 0 :(得分:1)

埃迪,

我遇到了类似的问题,并认为这是因为我的故事板。但仔细检查后,崩溃的线路正试图访问.revealController上的UIViewController

.revealController已通过UIViewController上的类别实现,我记得在不添加链接器标志的情况下无法从静态库加载类别。

在安装说明中,它说添加链接器标记-ObjC,为此请转到您的项目Build Settings并搜索Other Linker Flags,然后添加-ObjC

由于我使用的是另一个库,我没有使用此标志,这意味着它正在尝试加载我不希望包含的其他库。为了解决这个问题,我特意要求它只加载PKReveal库:

-force_load $(BUILT_PRODUCTS_DIR)/libPKRevealController.a

希望这会帮助别人,因为它花了我一段时间:/

w ^