1

splitViewController で詳細ビューを変更しようとしています。self.detailView.view=view.view; を実行すると、UIViewControllerHierarchyInconsistency 例外が発生します。xibファイルに他のviewControllerがあるかどうかを制御しました.removeFromParentViewControllerメソッドも使用しましたが、同じ例外があります。このエラーは iOS 6 でのみ発生し、iOS 5 の iPad シミュレーターでは発生しません。

4

1 に答える 1

0

キャッチされない例外 'UIViewControllerHierarchyInconsistency' が原因でアプリを終了しています。これはエラーです。view.view は、splitViewController にロードしたいビューです。他のコードはありません。分割内のビューの変更のみを行います。viewController への関連付けを削除したいので、removefromparentviewcontroller を使用しました。例外を削除するには

あなたの splitViewController は UISplitViewController のインスタンスですか? http://developer.apple.com/library/ios/#documentation/uikit/reference/UISplitViewController_class/Reference/Reference.html

もしそうなら、あなたは根本的に間違ったことをしています。UISplitViewController は、マスター ビュー コントローラーとディテール ビュー コントローラーの 2 つのビュー コントローラーの単なるコンテナーです。インタラクションなどを処理する方法を決定するのは、View Controller 次第です。removeFromParentViewController はビュー コントローラー コンテインメントでのみ使用されるため、ここでは適用できないようです。

上記のリンクのドキュメントを読んで、ニーズを満たしているかどうかを確認してください。ただし、理解できれば、ビューではなく分割ビューでビューコントローラーを設定する必要があります。

あなたをするために、あなたはする必要があります:

// Assume this is initialised correctly
UISplitViewController* splitViewController = [UISplitViewController alloc] init...];

// Assign the two view controller you want to be used in the split view controller
splitViewController.viewControllers = @[masterViewController, detailViewController];

これが当てはまらない場合は、正しい解決策を作成できるようにコードを提供してください。あなたの説明は、あなたが実際に何をしているのかについてかなり曖昧です。

于 2012-10-18T16:27:24.547 に答える