0

我是 iOs 开发的新手,我无法解决这个问题,当我选择 uitab 时如何重新加载 uiwebview 这是我的代码:

- (void)tabBarController:(UITabBarController *)aTabBarController didSelectViewController:(UIViewController *)viewController
{

    if(self.tabBarController.selectedIndex == 0)
    {
        [[NSURLCache sharedURLCache] removeAllCachedResponses];

        BSHomeViewController *homeViewController = [[BSHomeViewController alloc] initWithNibName:nil bundle:nil];
        BSHomeViewController.webView = nil;

        [BSHomeViewController.webView loadRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:HOMEPAGE]]];


    }
    [[NSUserDefaults standardUserDefaults] setInteger:self.tabBarController.selectedIndex forKey:@"BSSelectedTab"];
}

我在 appdelegate 中声明它,但它不会重新加载。

请帮我解决这个问题。非常感谢所有答案。

4

3 回答 3

0

您需要将 AppDelegate 设置为您的 tabbarcontroller 的委托。

您可以在 didFinishLaunchingWithOptions 中执行此操作

self.tabBarController.delegate = self;

我不确定这是否是正确的设计。

为什么不在 BSHomeViewController 的 viewDidAppear 中重新加载 webview?

于 2013-06-18T14:58:49.870 回答
0

上面的代码在您调用时实例化了一个新的 BSHomeViewController 实例,BSHomeViewController *homeViewController = [[BSHomeViewController alloc] initWithNibName:nil bundle:nil];并且该视图永远不会被显示或推送给用户查看。当 UITabBar 切换到选定的 ViewController 时,您是否有理由不选择利用 viewWillAppear 或 viewDidAppear?

编辑:这很丑陋,但它会起作用......

TabBarDelegate.m

- (void)tabBarController:(UITabBarController *)aTabBarController didSelectViewController:(UIViewController *)viewController
{

    if(self.tabBarController.selectedIndex == 0)
    {
            [viewController viewWillAppear:YES];
    }
    [[NSUserDefaults standardUserDefaults] setInteger:self.tabBarController.selectedIndex forKey:@"BSSelectedTab"];
}

BSHomeViewController.m

- (void)viewWillAppear:(BOOL)animated 
{
    [super viewWillAppear:animated];
    [[NSURLCache sharedURLCache] removeAllCachedResponses];
    [self.webView loadRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:HOMEPAGE]]];
}
于 2013-06-18T15:00:11.983 回答
0

每次显示 BSHomeViewController 的视图时重新加载 webview

在你的 BSHomeViewController.m

- (void)viewWillAppear:(BOOL)animated {
    [super viewWillAppear:animated];
    [self.webView loadRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:HOMEPAGE]]];
}
于 2013-06-18T15:07:41.290 回答