0

ナビゲーションの移行中に、あるアプリケーションUIScrollViewから次のアプリケーションに渡そうとしているアプリケーションがあります。を削除してから新しいにアタッチUIViewControllerする方法を見つけようとしています。UIScrollViewsuperviewUIViewController

私は最初NSLogviewDiDisappear/メソッドと2番目の/メソッドでを実行しました。これは私が得た順序です:viewWillDisappearUIViewControllerviewDidAppearviewWillAppearUIViewController

viewWillDisappear
viewWillAppear
viewDidDisappear
viewDidAppear

私の質問は、これがすべての遷移で一貫性を保つことを期待できますか、それともこれらは異なるスレッドで実行され、特定のもののロード時間に基づいて変化する可能性がありますか?

編集:バンプ

4

2 に答える 2

0

さて、自問する正しい質問は、viewController がいつ表示/表示されるかということです。

UIViewController A

UIViewController B

UIScrollView C

1: A:viewWillDisappear -> A を表示、B を非表示 (C は A にある必要があります)

2: B:viewWillAppear -> A を表示、B を非表示 (C は A にある必要があります)

2 から 3 への遷移: A と B の両方が表示されます

3: A:viewDidDisappear -> A 非表示、B 表示 (C は A にある必要があります)

4: B:viewDidAppear -> A 非表示、B 表示 (C は B にある必要があります)

遷移中に両方のビュー コントローラー ビューが表示される瞬間があることがわかるので、C を a から b に移動することはできません。回避策を考えることができます...

おそらく、A のスクリーンショットを作成し、すべてのオブジェクトの上にそれを A に追加してから、C を B に移動してトランジションを行うことができます

または、A で C のフェードアウトを作成し、トランジションを作成してから、B で C のフェードインを作成することもできます...

于 2012-05-18T07:36:32.113 に答える
0

実際には、ビューをサブビューとして追加しようとすると、既にスーパービューがある場合、元のスーパービューから削除されてから、新しいスーパービューに追加されます (ドキュメント: http://developer.apple.comに従って)。 /library/ios/#documentation/uikit/reference/UIView_Class/UIView/UIView.html )...なので、思ったほど気にする必要はありません。

于 2012-06-24T09:31:29.437 に答える