第二次加载View Controller时,不要重新加载UIWebView

时间:2015-06-03 12:18:34

标签: ios multithreading uiwebview reload

我有UIWebViewHomeViewController中的按钮。

点击此按钮需要SettingViewController

但问题是,当我再次从HomeViewController再次回到SettingViewController时,它再次启动ViewDidLoad并再次重新加载我不想要的UIWebView

即使再次加载HomeViewController,我希望网页仍然存在。

提前谢谢你。

2 个答案:

答案 0 :(得分:0)

如果再次加载视图控制器,则意味着它在之前被释放.....可能是它被弹出或关闭而且没有人保留视图

a)简单的解决方案:不要从视图堆栈中删除vc

b)'艰难' ;)解决方案:让somone坚持下去,因此它永远不会被解除分配 - 这不是好的设计IMO,因为视图不应该被缓存超出UIKit的范围,但是它有效并且它将帮助旧状态。

  • 给某人一个额外的VC插座并推送并弹出
  • 在其他VC上使用属性,或者如果必须在appDelegate上使用

=>两种方式都要求你退出纯粹的故事板

答案 1 :(得分:0)

如果您在从SettingViewController返回到HomeViewController的同时推送视图,则会在ViewDidLoad中调用HomeViewController方法,我猜您正在加载内容UIWebView方法中的ViewDidLoad

为了防止这种情况 创建从HomeViewControllerSettingViewController的segue,并在点击按钮时从prepareForSegue方法调用给定的segueID

点击后退按钮,只需弹出您的视图即可 (无需为后退按钮添加任何代码,它会自动弹出您的视图,但如果您需要,可以添加[self.navigationController popViewControllerAnimated:YES];

将您的webView内容加载到viewDidLoad

- (void)viewDidLoad {
    [super viewDidLoad];
    // Do any additional setup after loading the view, typically from a nib.
    [self configureView];
    NSURL *url = [NSURL URLWithString:@"http://www.lipsum.com/"];
    NSURLRequest *urlRequest = [NSURLRequest requestWithURL:url];
    [self.webViewDemo loadRequest:urlRequest];
}

由于ViewDidLoad中的HomeViewController方法仅在同一时间视图中添加了视图时调用了一次,因此每次调用时都会调用viewWillAppearviewDidAppear HomeViewController将位于堆栈顶部

ViewDidLoad中添加断点,您可以看到