我有UIWebView
和HomeViewController
中的按钮。
点击此按钮需要SettingViewController
。
但问题是,当我再次从HomeViewController
再次回到SettingViewController
时,它再次启动ViewDidLoad
并再次重新加载我不想要的UIWebView
。
即使再次加载HomeViewController
,我希望网页仍然存在。
提前谢谢你。
答案 0 :(得分:0)
如果再次加载视图控制器,则意味着它在之前被释放.....可能是它被弹出或关闭而且没有人保留视图
a)简单的解决方案:不要从视图堆栈中删除vc
b)'艰难' ;)解决方案:让somone坚持下去,因此它永远不会被解除分配 - 这不是好的设计IMO,因为视图不应该被缓存超出UIKit的范围,但是它有效并且它将帮助旧状态。
=>两种方式都要求你退出纯粹的故事板
答案 1 :(得分:0)
如果您在从SettingViewController
返回到HomeViewController
的同时推送视图,则会在ViewDidLoad
中调用HomeViewController
方法,我猜您正在加载内容UIWebView
方法中的ViewDidLoad
。
为了防止这种情况
创建从HomeViewController
到SettingViewController
的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
方法仅在同一时间视图中添加了视图时调用了一次,因此每次调用时都会调用viewWillAppear
和viewDidAppear
HomeViewController
将位于堆栈顶部
在ViewDidLoad
中添加断点,您可以看到