我有一个根UIViewController,它有一个名为webView的属性。 WebView是一个带有XIB的UIViewController,它包含一个UIWebView。从我的根视图我模态(有没有其他方法?)加载webView ViewController并设置其URL,始终在同一页面。
我发现,如果在加载webView之后,我使用其默认网页导航到另一个网页,然后关闭webView并返回到根控制器 - 然后重新打开webView,webView不是显示默认页面,而不是我导航到的页面,这意味着webView ViewController永远不会被破坏并从内存中删除。这让我觉得很糟糕。
所以在根ViewController中,我在viewWillAppear下添加了这段代码:animated -
if (self.webView != nil) {
self.webView = nil)
}
这还够吗?还有更好的方法吗?
答案 0 :(得分:0)
我有一个根UIViewController 有一个名为webView的属性。的WebView 是一个带有XIB的UIViewController 包含一个UIWebView。
首先,一个风格建议。不要命名视图控制器类FooView
。将它们命名为FooViewController
。因为那是他们的本意。控制器。不是意见。
从我的根本看来,我是模态的(在那里 任何其他方式?)加载webView ViewController并始终设置其URL 到同一页。
您可以通过多种方式在屏幕上显示视图;将它作为模型视图控制器呈现是一种方式。另一种方法是使用导航控制器并将其推送到导航堆栈。另一种方法是使用动画原语并交换活动视图。
如果您以模态方式呈现视图控制器,则应使用委托模式,并让“父”视图控制器在您希望它离开时以模态方式将其解除。
我在这里给出了答案:
Pop-up modal with UITableView on iPhone
非常接近您需要的代码,除了您可能只想拥有一个更简单的委托协议,如:
@protocol FooViewControllerDelegate <NSObject>
- (void)fooViewControllerDidFinish:(FooViewController*)fooViewController;
@end