0

使用 Cordova 2.1.0 进行 IOS 应用程序开发。我在 MainViewController.m 文件中有以下作为我的 shouldStartLoadWithRequest 函数:

- (BOOL)webView:(UIWebView *)webView2 
shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType {

    NSLog(@"shouldStartLoadWithRequest function");

    // Intercept custom location change, URL begins with "js-call:"
    if ([[[request URL] absoluteString] hasPrefix:@"js-call:"]) {

        // Call the given selector
        [self performSelector:NSSelectorFromString(@"resetBadgeCount")];

        // Cancel the location change
        return NO;
    }

    // Accept this location change
    return YES;

}

问题是,在我的 index.html 中,我有以下内容:- window.location = "js-call:resetBadgeCount";

但是 resetBadgeCount 是 AppDelegate.m 文件中存在的一个函数,每当调用 shouldStartLoadWithRequest 函数时,都会出现以下错误:

-[MainViewController resetBadgeCount]: unrecognized selector sent to instance 0x199db0

那么我应该如何更改代码以抑制错误并成功调用 resetBadgeCount 函数。

4

1 回答 1

1

目前您正在告诉 MainViewController 尝试执行选择器。这就是为什么它说:

-[MainViewController resetBadgeCount]:无法识别的选择器...

尝试将 [self performSelector:...] 更改为 [[[UIApplication sharedApplication] delegate] performSelector:...]

于 2012-10-04T05:36:00.510 回答