我正在制作一个基于拆分 View 的iPad应用程序(仅纵向模式),并且我想知道如何在调用viewDidUnload
之后恢复初始状态。
当分割 View 应用程序首次启动时,-splitViewController:willHideViewController:withBarButtonItem:forPopoverController:
被自动调用(在-viewDidLoad
之后)。
我在方法中准备UIBarButtonItems。
如果我打开模式对话框或带有UIWebViewController
的内容(它会占用大量内存),则应用程序会收到内存警告,并调用viewDidUnload
。
当我关闭模式对话框时,-viewDidLoad被自动调用,但是这次-splitViewController:willHideViewController:withBarButtonItem:forPopoverController:
不被调用。
我在准备UIBarButtonItems-splitViewController:willHideViewController:withBarButtonItem:forPopoverController:
但它没有被调用,因此按钮被关闭了。
在那种情况下,我应该手动调用该方法吗?
我在这里找到了类似的帖子。
https://github.com/grgcombs/IntelligentSplitViewController/issues/6
谢谢。
最佳答案
我不知道可以回答我自己的问题,但是也许我找到了答案。 http://osdir.com/ml/cocoa-dev/2011-02/msg00430.html
它说我们应该将BarButtonItems保留在viewDidUnload中,并将其加载到viewDidLoad中。
看来工作正常。
- (void)viewDidUnload {
[super viewDidUnload];
self.toolbarItems = self.toolbar.items; // property with retain policy
}
- (void)viewDidLoad {
[super viewDidLoad];
if (self.toolbarItems) {
self.toolbar.items = self.toolbarItems;
self.toolbarItems = nil;
}
}
关于ipad - 如何使用UISplitViewController从viewDidUnload(内存警告后)恢复,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/6935049/