1

PhoneGap プラグインを介して (組み込みフレームワークを介して) アプリケーションをロードしています。
今、現在の UIViewController をFlashizFacadeオブジェクトのparentViewControllerプロパティに渡そうとしています。 アプリケーションを実行すると、 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 でキャッチされていない例外を破棄しました: デリゲート: <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 である必要があります有効な navigationController が割り当てられた UIViewController のインスタンス

私はもう試した:

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

前もって感謝します!

4

1 に答える 1

3

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ます。リソース フォルダーをどうすればよいかわからなかったため、フレームワークを正しく含めていなかったと思いますが、うまくいくはずです。

編集:リソースフォルダーを含めただけで、機能しています!!!

また、phonegap のビュー コントローラーの navigationBar を of に配置したくない場合はviewDidLoadMainViewController.m

self.navigationController.navigationBar.hidden = YES;
于 2012-09-11T11:52:45.277 に答える