私はしばらくの間、この (やや) ランダムなバグに対処してきましたが、問題がわかりません。コンテキスト: マスター ビュー内に UINavigationController を持つ UISplitView iPad アプリを作成しています。
赤がメイン メニュー、緑がサブメニュー、紫がメイン コンテンツ。
この UINavigationController は、垂直メニューを表示するためのスペースが必要なため、マスター ビュー全体を埋めません。ユーザーが垂直サイド メニューのボタンを選択すると、UINavigationController に新しい何かが設定され、オプション付きの UITableView が表示されます。すべてのメニュー選択で私がしていることは次のとおりです。
[self.subMenu setViewControllers:@[subMenuViewController] animated:YES];
何が起こるかというと、メニューの履歴を保持する必要がないので、毎回新しいルート ビュー コントローラーを subMenu に設定するだけです。
問題は、デバイスの向きをいじり始めたときです。明確なパターンはありませんが、回転時にアプリがクラッシュすることがあります。これを Instruments で実行すると、次のようになります。
167 Zombie -1 00:32.101.527 UIKit -[UITableView _spacingForExtraSeparators]
そして興味深いのは、subMenu の前のルート ビュー コントローラーでアクセス不良が発生することです。そのため、「Events」をタップしてから「Podcasts」をタップすると、「EventsViewController」にアクセスしようとすると、不正なアクセスが発生します。
したがって、subMenu UINavigationController のルート ビュー コントローラーを置き換える方法に何か問題があると思いますが、それが何であるかはわかりません。新しいルート ビュー コントローラーを設定する前に、現在のルート ビュー コントローラーが解放されていることを確認する必要があるのでしょうか。
どんな助けでも大歓迎です。:)