目标C - 再次点击标签栏项目时,如何重新加载网页视图?

问题描述 投票:0回答:1

我真的需要帮助。最初,通过点击标签栏项目,我将在webview用户上加载Gym VC然后向下滚动web view我想要完成的是当用户再次点击相同的标签栏项目时,webView将重新加载。我设法从handleRefresh调用方法MyTabBarController但是该方法根本没有做任何事情。任何指导都非常感谢。

目前我有以下代码

MyTabBarController.m

#import "GymNavigationController.h"
#import "Gym.h"

- (void)tabBarController:(UITabBarController *)tabBarController didSelectViewController:(UIViewController *)viewController
{
    if([viewController isKindOfClass:[GymNavigationController class]]){

        Gym *myGym = [[Gym alloc] init];
        [myGym handleRefresh:nil];
     }
}

Gym.m

#import "Gym.h"
#import "AppDelegate.h"
#import "GymDet.h"
#import <QuartzCore/QuartzCore.h>

@interface Gym () {

AppDelegate *appDelegate;
NSString *sURL, *sRefresh; 

}

@end

@implementation Gym

@synthesize webView;

- (void)viewDidLoad {

    [super viewDidLoad];

    appDelegate = (AppDelegate *)[[UIApplication sharedApplication] delegate];

    sURL = appDelegate.gURL;
    sURL = [sURL stringByAppendingString:@"/apps/gym.asp?"];

    NSLog(@" The sURL to be load for the current page : %@ ", sURL);

    sRefresh = sURL;

    [defaults setObject:sRefresh forKey:@"txtRefresh"];
    [defaults synchronize];

    NSURL *url = [NSURL URLWithString:sURL];
    NSURLRequest *urlRequest = [NSURLRequest requestWithURL:url];
    [webView setDelegate:(id<UIWebViewDelegate>)self];
    [webView loadRequest:urlRequest];

    UIRefreshControl *refreshControl = [[UIRefreshControl alloc] init];
    [refreshControl addTarget:self action:@selector(handleRefresh:) forControlEvents:UIControlEventValueChanged];
    [webView.scrollView addSubview:refreshControl];

}

- (void) viewWillAppear:(BOOL)animated{

    [super viewWillAppear:animated];

    //[self handleRefresh:nil];

    [[self navigationController] setNavigationBarHidden:YES animated:YES];
}

-(void)viewDidDisappear:(BOOL)animated{

    [[self navigationController] setNavigationBarHidden:NO animated:YES];
}

- (void)handleRefresh:(UIRefreshControl *)refresh {

    //--- Call the stored txtMemCode, something like session ---
    NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
    sRefresh = [defaults objectForKey:@"txtRefresh"];

    NSURL *url = [NSURL URLWithString:sRefresh];
    NSURLRequest *urlRequest = [NSURLRequest requestWithURL:url];

    [webView loadRequest:urlRequest];
    [refresh endRefreshing];
}
objective-c uiwebview uitabbarcontroller uirefreshcontrol
1个回答
1
投票

首先,我想建议为什么每次使用tabbar时都要启动一个新的Gym对象,你应该参考Gym对象并初始化它,如果它的nil然后处理参考,但它可能是你的要求,如果它我想建议你创建一个BOOL变量,让我们说isUpdateRequire,当你实例化你的viewcontroller时,指定isUpdateRequire = true。然后在视图结束时确实会出现加载或视图(根据您的需要)检查

if isUpdateRequire {
    [self handleRefresh:nil]
}

或者,您可以在webviewcontroller中创建协议,并将其委托分配给tabbarcontroller,并在需要时触发委托方法。

如果你不希望方法在你回到vc时调用,只需将这个条件放在viewWillAppear中

if self.isMovingToParentViewController { 
    [self handleRefresh:nil] 
}
© www.soinside.com 2019 - 2024. All rights reserved.