3

通常の UINavigationController があり、一連の UIViewController をスタックにプッシュします。プッシュ コントローラーのビュー遷移は、水平方向のアニメーション遷移です: [self.navigationController pushViewController:controller animation:YES];

ただし、ナビゲーション バーの [戻る] ボタンを押すと、ビューの遷移アニメーションが垂直になります (前のコントローラー/ビューを垂直にドロップダウンします)。

これを水平にする方法が見つからないようです。これは、ランドスケープ モードでのみ発生します。ポートレート モードでは、トランジションはすべて水平フリップ トランジションとして発生します。

誰でもこれに光を当てることができますか?

ありがとう

4

1 に答える 1

6

私も同じ問題を抱えていました。押し戻して最初のビューに移動すると、通常の横方向のアニメーションではなく、縦方向のアニメーションが表示されました。

Apple の NavBar サンプル コードに基づく回答を見つけました。サンプル コードを編集して、すべてのビュー コントローラーに「shouldAutorotateToInterfaceOrientation」を追加し、YES を返すようにしました。

実行すると、「戻る」を押したときに正しいアニメーションが使用されていることに気付きました。

修理:

ナビゲーション コントローラー内で独自のサブクラス化された UIViewController を使用し、shouldAutorotateToInterfaceOrientation を追加する必要があるようです。おそらく、デフォルトの UIViewController が正しい向きを返していないため、間違ったアニメーションが使用されています。

バックグラウンド:

自分のコードと Apple のコードの違いをすべて調べたところ、ナビゲーション コントローラーが UINavigationController のサブクラスであり、そこですべての作業を実行していることがわかりました。デフォルトでは、IB はこの中に UIViewController を追加していたので、そのままにしておきました。NavBar サンプル コードには独自のクラス セット (MainViewController) があることに気付きました。そこで、Xcode で xib を使用しない新しい UIViewController サブクラスを作成し、IB の Identity パネルの Class オプションで設定しました。

これが理にかなっており、役立つことを願っています!

于 2010-06-15T23:51:13.947 に答える