Как восстановить из viewDidUnload (после предупреждений памяти), используя UISplitViewController - PullRequest
3 голосов
/ 04 августа 2011

Я делаю приложение для 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 Ответ

3 голосов
/ 06 августа 2011

Я не знаю, нормально ли отвечать на свой вопрос, но, возможно, я нашел ответ на этот вопрос.
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;
   }
}
...