3

私は分割ビューベースのiPadアプリケーション(ポートレートモードのみ)を作成していますが、viewDidUnloadが呼び出された後の初期状態の回復方法を知りたいと思います。UISplitViewControllerを使用して、viewDidUnloadから回復する方法(メモリ警告の後)

スプリットビューアプリケーションを初めて起動、 -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

ありがとうございます。

+0

ほとんどの場合、viewDidLoadでUIを設定する必要があります。これらのUIBarButtonItemは、作成した後どこに配置しますか? –

+0

これはsplitViewControllerで行われます:willHideViewController:withBarButtonItem:forPopoverController:分割ビューベースのプロジェクトを作成できますか? viewDidLoadには実装が見つかりません。私はそれがボタンを動的に変更するためだと思います。 – tokentoken

答えて

3

私自身の質問に答えることはOKですが、これについての回答が見つかった可能性があります。
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; 
    } 
} 
関連する問題