收到通知后,我想更改我的uiwebview

时间:2013-01-09 08:58:17

标签: ios objective-c uiwebview

我收到的通知中包含要在UIWebView中打开的网址。但我无法从我的UIWebview访问AppDelegate(这是接收notification的地方)。

-(void) application:(UIApplication *)application didReceiveRemoteNotification(NSDictionary* ) userInfo{
      // handle notification (this works)
      //HERE I want to call my UIWebView and load the url I got.
}

3 个答案:

答案 0 :(得分:1)

执行此操作的一种方法是发布您的UIWebView收到的通知。查看NSNotificationCenter Class Referencethis example on SO

答案 1 :(得分:1)

在我的应用中,我使用了以下内容,这是UIWebView已经出现在屏幕上的时间:

- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo
{
    NSString *urlString = [userInfo objectForKey:@"url"];
    if( [self.window.rootViewController isKindOfClass:[UINavigationController class]] ){
        UINavigationController *currentNavigationController = (UINavigationController*)self.window.rootViewController;
        if( [currentNavigationController.visibleViewController isKindOfClass:[NHCallVC class]] ){
            SomeViewController *currentViewController = (SomeViewController*)currentNavigationController.visibleViewController;
            [currentViewController.webView loadRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:urlString]]];
        }
    }
}

UINavigationController的结构似乎很复杂,但这是我设置应用的方式所必需的。这可能与您的应用有所不同。

想法是获取已打开的viewcontroller并在UIWebView上加载URL。代码假设UIViewController当前UIWebView已打开。如果您想在UIViewController打开网址之前导航到正确的UIWebView,则应更改代码。

答案 2 :(得分:0)

将观察者放置在UIWebView所在的视图中,例如:

    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(recievedNotification:) name:@"ReceivedNotification" object:nil];

在recievedNotification函数中编写适当的代码,以更改UIWebView的目标URL。

并在APP委托中的didReceiveRemoteNotification函数中发布通知,例如:

    [[NSNotificationCenter defaultCenter] postNotificationName:@"ReceivedNotification" object:nil];
祝你好运。