如何使用UISplitViewController从viewDidUnload(在内存警告之后)恢复

时间:2011-08-04 00:58:13

标签: ipad uisplitviewcontroller didreceivememorywarning viewdidunload

我正在制作基于拆分视图的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

感谢。

1 个答案:

答案 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;
   }
}