目标C - 再次点击标签栏项目时,如何重新加载网页视图?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了目标C - 再次点击标签栏项目时,如何重新加载网页视图?相关的知识,希望对你有一定的参考价值。
我真的需要帮助。最初,通过点击标签栏项目,我将在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];
}
答案
首先,我想建议为什么每次使用tabbar时都要启动一个新的Gym对象,你应该参考Gym对象并初始化它,如果它的nil然后处理参考,但它可能是你的要求,如果它我想建议你创建一个BOOL变量,让我们说isUpdateRequire,当你实例化你的viewcontroller时,指定isUpdateRequire = true
。然后在视图结束时确实会出现加载或视图(根据您的需要)检查
if isUpdateRequire {
[self handleRefresh:nil]
}
或者,您可以在webviewcontroller中创建协议,并将其委托分配给tabbarcontroller,并在需要时触发委托方法。
如果你不希望方法在你回到vc时调用,只需将这个条件放在viewWillAppear中
if self.isMovingToParentViewController {
[self handleRefresh:nil]
}
以上是关于目标C - 再次点击标签栏项目时,如何重新加载网页视图?的主要内容,如果未能解决你的问题,请参考以下文章
Objective C - WebView无法从顶部重新加载
当用户点击地址栏输入使用 JQuery 或 JS 时,如何防止网页重新加载