3

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

谢谢。

4

1 回答 1

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;
   }
}
于 2011-08-05T22:48:01.437 回答