【发布时间】:2018-09-04 07:18:00
【问题描述】:
我真的需要帮助。最初,通过点击标签栏项目,我将在Gym VC 上加载webview,然后用户将向下滚动web view
我想要完成的是当用户再次点击相同的标签栏项目时,webView 将再次重新加载。我设法从MyTabBarController 调用方法handleRefresh 但该方法根本没有做任何事情。非常感谢任何指导。
目前我有以下代码
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];
}
}
健身房.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];
}
【问题讨论】:
-
注意:不要打电话给
-[NSUSerDefaults synchronize]。来自Apple's documentation... “这个方法是不必要的,不应该使用。”
标签: objective-c uiwebview uitabbarcontroller uirefreshcontrol