0

transitionFromView:toView:duration:options:completionについて: Apple doc は最後の数行でこれを述べています:

このメソッドは、ビュー階層内のビューのみを変更します。アプリケーションのView Controllerを変更することはありません。たとえば、このメソッドを使用してビュー コントローラーによって表示されるルート ビューを変更する場合、ビュー コントローラーを適切に更新して変更を処理する必要があります。

ViewController に 2 つの全画面サイズのビューが一度に 1 つずつ表示される場合、問題はありません。

[transitionFromView:self.view toView:self.view2...

しかし、これは、変更を処理するためにView Controllerを適切に更新するのはあなたの責任であることを意味しますか?

私がこれを行う場合:

secondViewController *sVc = [[secondViewController alloc]init];
[transitionFromView:self.view toView:sVc.view...

変更を処理するためにView Controllerを適切に更新するのは私の責任ですか?またはViewControllerを更新する方法は?

アップデート

単一のビュー プロジェクトを作成し、secondVC を追加してから、firstVC のボタン タップで次のようにしました。

self.svc = [[secondVC alloc]init]; 

[UIView transitionFromView:self.view toView:self.svc.view duration:1.0 options:UIViewAnimationOptionTransitionFlipFromLeft completion:^(BOOL finished) {}];

... secondVC viewDidLoad が機能しており、その nslog が機能しています。

では、viewcontroller の更新を処理する方法は?

4

2 に答える 2

2

「変更を処理するためにView Controllerを適切に更新するのはあなたの責任です」という声明。つまり、次のようなビュー階層デリゲート メソッドを適切に呼び出す必要があります。

- (void)viewDidLoad;
- (void)viewDidUnload;
- (void)viewWillAppear;
- (void)viewDidDisappear;

適切なビュー管理を担当するその他のメソッド。

ここにいくつかの があります。

于 2013-05-02T12:57:10.837 に答える
1

使用するときは、ビュー階層transitionFromView:toView:duration:options:completion:のみを表示します。toViewしかし、Apple は、これらのビューの親である ViewController の更新を処理する必要があると言っています。

ナビゲーションコントローラースタックでビューコントローラーを維持しています...

.ex の場合: アプリケーションに TabController がある場合、

tabIndex 2 のどこかで、tabindex 1 で viewcontroller のビューを表示する必要がある場合は、transitionfromviewメソッド を使用するときに tabIndex を更新する必要があります。

[UIView transitionFromView:fromView 
                        toView:toView 
                      duration:0.5 
                       options:(controllerIndex > tabBarController.selectedIndex ? UIViewAnimationOptionTransitionCurlUp : UIViewAnimationOptionTransitionCurlDown)
                    completion:^(BOOL finished) {
                        if (finished) {
                            tabBarController.selectedIndex = controllerIndex;
                        }
                    }];
于 2013-05-02T13:04:15.790 に答える