このカスタム リフレッシュを呼び出すときに CDVViewController を閉じることができないという問題があり、バックグラウンドでロードされたままになり、新しいものをロードしてメモリ リークやメモリ使用率が高くなります。webView、subview、CDVViewController、ChildViewController に release と removeFromSuperview の両方を使用しようとしましたが、どれも機能しません。ストーリーボード経由でタブ バー コントローラーを実行しています (CDVViewController をサブビューとして呼び出さなければならないもう 1 つの理由)。サファリ経由で Web インスペクターを使用すると、そのタブでページが構築され、別のタブで更新すると表示されます。 (CDVViewController/phonegap を使用しない)正常に動作します。どんな助けでも大歓迎です。
だからここに私の.hがあります
#import <UIKit/UIKit.h>
#import <ifaddrs.h>
#import <arpa/inet.h>
#import <Cordova/CDVViewController.h>
@interface ThirdViewController : CDVViewController <UIWebViewDelegate>
{
IBOutlet CDVViewController *webView;
IBOutlet UIActivityIndicatorView *activityind;
}
- (IBAction)Refresh:(id)sender;
@end
そして私の.m
@interface ThirdViewController ()
@end
@implementation ThirdViewController
- (void)viewDidLoad
{
webView = [CDVViewController new];
webView.startPage = @"MYWEBSITE";
[self addChildViewController:webView];
[self.webView addSubview:webView.view];
webView.view.frame = CGRectMake(0, 0, 0, 0);
[activityind startAnimating];
[self.webView addSubview: activityind];
[self CustomActivity];
}
-(void) CustomActivity
{
if ([webView.reference isEqualToString:@"TRUE"]){ //webView.reference is something I added into phonegap CDVViewController so that I am able to see when it is being loaded/used to load the custom activity/activity ind to work.
[activityind removeFromSuperview];
}else{
[NSTimer scheduledTimerWithTimeInterval:.5 target:self selector:@selector(CustomActivity) userInfo:nil repeats:NO];
}
}
- (IBAction)Refresh:(id)sender {
webView = [CDVViewController new];
webView.startPage = @"MYWEBSITE";
[self addChildViewController:webView];
[self.webView addSubview:webView.view];
webView.view.frame = CGRectMake (0,0,self.view.frame.size.width,(self.view.frame.size.height -44));
[activityind startAnimating];
[self.webView addSubview: activityind];
[self CustomActivity];
}
- (void)webViewDidStartLoad:(UIWebView *)webView {}
- (void)webViewDidFinishLoad:(UIWebView *)subview {}
- (void)loading {}
- (void)didReceiveMemoryWarning{[super didReceiveMemoryWarning];}
@end