0

私は最初のアプリに取り組んでいる新しい IOS 開発者です。私はそれにかなりの道を歩んでおり、ほとんどすべてを希望どおりに機能させることができましたが、奇妙なバグを追跡しています。

基本的なアプリのデザインは次のとおりです (はい、Apple UI ガイドラインに準拠していない可能性があることは理解しています)。

ストーリーボードを完全に使用して、最新の X Code で記述されたユニバーサル アプリです。iPhone と iPad のインターフェイスは動作していますが、iPad のインターフェイスに問題があります。ルート コントローラーは UITabView です。タブの 1 つに、典型的なマスター ディテール パターンを実装する分割ビュー コントローラーがあります。縦向きモードでは、マスター テーブルが非表示になり、コンテンツがレンダリングされます。ナビゲーション バー ボタンを押すと、マスター テーブル ビューが表示されます。アイテムを選択すると、マスター テーブル ビューが消え、右側がセグエ経由でコンテンツを更新します。ここまでは順調ですね。デバイスを回転させても、すべてが機能し続けます。分割ビューのマスター テーブルは左側に残り、コンテンツは右側に表示されます。これはすべて、タブコントローラー内でもうまく機能します。

バグが発生していない場合と発生している場合を示す 2 つのユース ケースをこの順序で示します。

1- バグは発生しません a) 縦向きでアプリを起動します。b) ナビゲーション ボタンを選択してマスター テーブルを表示します c) テーブルからアイテムを選択します (アイテムはレンダリングされ、マスター テーブルは消えます) d) デバイスを横向きに回転します (マスター/詳細は適切に回転します) e) タブ コントローラーから別のビューを選択します f) オリジナルを選択します分割ビューを含むビュー g) すべてが素晴らしい

2- このユース ケースでバグが発生する a) 縦向きでアプリを起動する b) ナビゲーション ボタンを選択してマスター テーブルを表示する c) テーブルからアイテムを選択する (アイテムがレンダリングされ、マスター テーブルが消える) d) タブ コントローラーから別のビューを選択する e)他のタブ ビューでデバイスを横向きに回転します f) タブ バーから分割コントローラーを使用して元のビューを選択します g) ビューが戻り、詳細がレンダリングされ、マスター/ビューが完全に失われます。

したがって、他のタブ ビューが選択される前にマスター/ディテールが横向きにレンダリングされていれば、すべて問題ないようです。ただし、タブで別のビューを選択する前に、マスター/詳細ビューが少なくとも 1 回は横向きにレンダリングされない場合、正しく機能しません。

マスター/テーブル コントローラーの viewWillAppear メソッドで、self.masterPopoverController.isPopoverVisible を確認すると、十分に false が返されます。

これはバグなのか、それとも Apple が別のコントローラーに分割ビューを配置することを推奨しない理由の 1 つなのか疑問に思っています。

4

1 に答える 1

0

最終的に自分で答えを見つけました。

https://github.com/grgcombs/IntelligentSplitViewController

これは、回転を処理する UISplitViewController のサブクラスです。

于 2012-07-10T02:11:04.973 に答える