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

10-10 01:14