我正在制作基于拆分视图的iPad应用程序(仅限肖像模式),我想知道如何在调用viewDidUnload
后恢复初始状态。
首次启动拆分视图应用程序时,
-splitViewController:willHideViewController:withBarButtonItem:forPopoverController:
自动调用(在-viewDidLoad
之后)。
我在方法中准备了UIBarButtonItems。
如果我打开模态对话框或带有UIWebViewController
的内容(它消耗大量内存),应用程序会收到内存警告,调用viewDidUnload
(s)。
当我关闭模态对话框时,会自动调用-viewDidLoad,但这一次
-splitViewController:willHideViewController:withBarButtonItem:forPopoverController:
未被调用。
我准备了UIBarButtonItems
-splitViewController:willHideViewController:withBarButtonItem:forPopoverController:
但它没有被调用,所以按钮被解雇了。
在这种情况下,我应该手动调用该方法吗?
我在这里发现了类似的帖子。 https://github.com/grgcombs/IntelligentSplitViewController/issues/6
感谢。
答案 0 :(得分:3)
我不知道回答我自己的问题是可以的,但也许我找到了答案。
http://osdir.com/ml/cocoa-dev/2011-02/msg00430.html
它说我们应该在viewDidUnload中保留BarButtonItems,并在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;
}
}