2013-10-28 4 views
3

Я хочу интегрировать PKRevealController и предоставить общее меню настроек для моего приложения. Я не мог найти учебники по этому поводу с раскадными версиями. У меня уже есть storyboad, на котором размещается диспетчер навигации (тот, который приходит по умолчанию) со стрелкой, указывающей на rootviewcontroller (вызываемый в моем случае LoginViewController).Интеграция PKRevealController с раскадровки

После любой документации для PKRevealController я добавил отдельную ViewController сцену и сделал свой класс PKRevealController, а затем сделал это в приложение делегата

@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

Эдди,

я получал подобный вопрос и подумал, что это из-за мою раскадровку. Однако при ближайшем рассмотрении, линия, которая выходит из строя пытается получить доступ к .revealController на UIViewController

.revealController реализуется через категорию на UIViewController, и я вспомнил, что вы не можете загрузить категории из статических библиотек без добавления флага компоновщика.

В инструкции по установке он говорит, чтобы добавить флаг компоновщика -ObjC, чтобы сделать это GOTO ваши проекты Build Settings и поиск Other Linker Flags затем добавить -ObjC.

Я не использовал этот флаг из-за использования другой библиотеки, это означало, что он пытался загрузить другие библиотеки, которые я не хотел включать. Чтобы обойти эту проблему, я специально попросил его, чтобы загрузить только библиотеку PKReveal:

-force_load $(BUILT_PRODUCTS_DIR)/libPKRevealController.a 

Надеется, что это поможет другим, как это мне потребовалось некоторое время:/

W

Смежные вопросы