Получение текущего UIViewController в Phonegap

Я загружаю приложение (через встроенную платформу) через плагин PhoneGap.
Теперь я пытаюсь передать текущий UIViewController в свойство parentViewController FlashizFacade объект.

Когда я запускаю свое приложение, я получаю эту ошибку в консоли отладки при назначении self:

2012-09-10 13:01:43.663 gTicketSales[2805:16a03] -[FlashizPlugin navigationController]: нераспознанный селектор отправлен экземпляру 0x91925e0

2012-09-10 13:01:43.665 gTicketSales[2805:16a03] ***WebKit отклонил неперехваченное исключение в webView:decidePolicyForNavigationAction:request:frame:decisionListener: delegate:<NSInvalidArgumentException>-[FlashizPlugin navigationController]: нераспознанный селектор отправлен экземпляру 0x91925e0

При назначении self.viewController:

2012-09-10 14:31:21.455 gTicketSales[3693:16a03] ***WebKit отклонил неперехваченное исключение в webView:decidePolicyForNavigationAction:request:frame:decisionListener: delegate:<Wrong parentViewController specified>При использовании немодального отображения parentViewController должен быть экземпляр UIViewController с назначенным допустимым navigationController

Я пробовал:

facade.parentViewController = self;
facade.parentViewController = self.viewController;

Мой файл .h

#import <Cordova/CDVPlugin.h>
#import <FlashizPaymentLib/FlashizFacade.h>

@interface FlashizPlugin : CDVPlugin <FlashizPaymentDelegate> {}

@property (nonatomic, retain) FlashizFacade* flashizFacade;
- (void) openFlashiz:(NSMutableArray*)arguments withDict:(NSMutableDictionary*)options;

@end

Мой файл .m

#import "FlashizPlugin.h"
@implementation FlashizPlugin
@synthesize flashizFacade;

- (void) openFlashiz:(NSMutableArray*)arguments withDict:(NSMutableDictionary*)options     {


NSLog(@"Flashiz Payment Opening...");

NSString *callbackId = [arguments pop];
NSString *invoiceId = [arguments objectAtIndex:0];

FlashizFacade* facade = [[FlashizFacade alloc] initWithEnvironment:FE_TEST];
facade.parentViewController = self;
facade.delegate = self;
self.flashizFacade = facade;
[facade executePaymentForInvoiceId:invoiceId];
[facade release];

CDVPluginResult *result;

result = [CDVPluginResult resultWithStatus:CDVCommandStatus_OK messageAsString:@"Flashiz Payment Executed..."];
[self writeJavascript:[result toSuccessCallbackString:callbackId]];

}


@end

Заранее спасибо!


person Mogipogi    schedule 10.09.2012    source источник


Ответы (1)


На AppDelegate.h

@property (nonatomic, strong) UINavigationController *navigationController;

на AppDelegate.m измените эту строку на application didFinishLaunchingWithOptions

self.window.rootViewController = self.viewController;

для этого

    UINavigationController *aNavigationController = [[UINavigationController alloc]                                                  initWithRootViewController:self.viewController];
    self.navigationController = aNavigationController;
    self.window.rootViewController = self.navigationController;

В моем проекте происходит сбой, потому что у меня нет ConnectionViewController, я думаю, что я неправильно включил фреймворк, потому что я не знал, что делать с папкой ресурсов, но я думаю, что это должно работать для вас.

РЕДАКТИРОВАТЬ: я только что включил папку ресурсов, и она работает!!!

И если вы не хотите, чтобы панель навигации на контроллере представления телефонной щели помещалась в viewDidLoad из MainViewController.m

self.navigationController.navigationBar.hidden = YES;
person jcesarmobile    schedule 11.09.2012
comment
Спасибо за помощь, но это тоже не помогло. Проблема в том, что я не могу получить доступ к объекту фасада, потому что это структура, которую мы должны реализовать. - person Mogipogi; 11.09.2012
comment
Затем попробуйте добавить navigationController в MainViewController phonegap. Если вы скажете мне, где я могу скачать Flashiz SDK, я могу попробовать взглянуть. - person jcesarmobile; 11.09.2012
comment
Спасибо за помощь. Я загружу SDK, когда буду за своим компьютером. - person Mogipogi; 11.09.2012
comment
Здесь вы можете скачать SDK: FlashizSDK Заранее спасибо. - person Mogipogi; 12.09.2012
comment
Хорошо, я попробую сегодня днем - person jcesarmobile; 12.09.2012
comment
Я пытался исправить это весь день снова. До сих пор нет результата. Мне удалось удалить ошибки, создав новый UINavigationController и новый UIViewController. Но теперь я не могу его представить (по крайней мере, я так думаю, потому что FlashIZ ViewController не отображается). - person Mogipogi; 12.09.2012
comment
Спасибо за это! Был очень полезен. - person Udi; 25.08.2014